Ich habe Schwierigkeiten, org-babel dazu zu bringen, diesen Codeblock mit zu bewerten
emacs v24.5
node v5.0.0
babel-node v.6.6.5
# + BEGIN_SRC js: cmd "babel-node" sei arr = [1, 2]; sei [x, y] = arr; console.log (x); console.log (y); # + END_SRC
Die Ausgabe sieht so aus
/ tmp / babel-3700Vaq / js-script-37003RN: 2
sei arr = [1, 2]; ^^^ SyntaxError: Deklarationen mit Blockbereich (let, const, function, class) werden außerhalb des strengen Modus noch nicht unterstützt at exports.runInThisContext (vm.js: 53: 16) at Module._compile (module.js: 404: 25) at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) at Object.require.extensions. (anonyme Funktion) [als .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) bei Module.load (module.js: 356: 32) at Function.Module._load (module.js: 311: 12) bei Function.Module.runMain (module.js: 457: 10) unter /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 bei Objekt. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) at Module._compile (module.js: 425: 26) *
Aber dieser Quellblock scheint in Ordnung zu sein
# + BEGIN_SRC js: cmd "babel-node" konstante Zahlen = [10,20,30,50]; const multiplyBy10 = numbers.map (a => a * 10); console.log (multiplyBy10); # + END_SRC # + ERGEBNISSE: | 100 | 200 | 300 | 500 |
Bearbeiten: Selbstausführende Funktion mit "use strict" hinzugefügt
# + BEGIN_SRC js: cmd "babel-node" (Funktion xy () { "benutze streng"; sei arr = [1, 2]; sei [x, y] = arr; console.log (x); console.log (y); }) () # + END_SRC # + ERGEBNISSE:
Die Ausgabe sieht so aus
/ tmp / babel-13529OHt / js-script-13529MVq: 6 sei [x, y] = arr; ^ SyntaxError: Unerwartetes Token [ at exports.runInThisContext (vm.js: 53: 16) at Module._compile (module.js: 404: 25) at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) at Object.require.extensions. (anonyme Funktion) [als .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) bei Module.load (module.js: 356: 32) at Function.Module._load (module.js: 311: 12) bei Function.Module.runMain (module.js: 457: 10) unter /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 bei Objekt. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) at Module._compile (module.js: 425: 26)
Edit: Dank @ebpa habe ich es geschafft, es mit zu lösen
npm install -g babel-preset-es2015
Dies ist die Ausgabe, die ich nach der Auswertung des Standardquellblocks erhalte, der keinen selbstausführenden Funktionswrapper hat.
/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372 neuen Fehler auslösen ("Preset konnte nicht gefunden werden" + JSON.stringify (val) + "relativ zum Verzeichnis" + JSON.stringify (dirname)); ^ Fehler: Die Voreinstellung "es2015" in Bezug auf das Verzeichnis "/ tmp / babel-270346ez" konnte nicht gefunden werden. unter /usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372:17 bei Array.map (native) unter OptionManager.resolvePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:364:20) unter OptionManager.mergePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:348:10) unter OptionManager.mergeOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:307:14) unter OptionManager.init (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:465:10) at compile (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:81:45) at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:14) at Object.require.extensions. (anonyme Funktion) [als .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) bei Module.load (module.js: 356: 32)
Bearbeiten: Starten Sie ein Terminal und führen Sie babel-node aus
> require ('babel-preset-es2015');
Ausgabe
Fehler: Modul 'babel-preset-es2015' kann nicht gefunden werden at Function.Module._resolveFilename (module.js: 337: 15) at Function.Module._load (module.js: 287: 25) at Module.require (module.js: 366: 17) at require (module.js: 385: 17) bei repl: 1: 1 at Object.exports.runInThisContext (vm.js: 54: 17) at _eval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:102:26) at REPLServer.replEval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:187:14) at bound (domain.js: 280: 14) bei REPLServer.runBound [als Bewertung] (domain.js: 293: 12)
Bearbeiten: Eine Fortsetzung der Inbetriebnahme
Bearbeiten: Dieser Beitrag gab mir einen Hinweis auf dieses Puzzleteil
https://phabricator.babeljs.io/T6723
http://discuss.babeljs.io/t/error-parsing-jsx-with-global-installation-babel-preset-react/59/6
Bearbeiten: Endlich funktioniert es, indem eine lokale Kopie installiert wird
$ mkdir local_babel $ cd local_babel $ npm init $ npm install --save-dev babel-cli $ npm install --save-dev babel-core $ npm install --save-dev babel-preset-es2015 $ npm install --save-dev babel-preset-stage-0 $ npm install --save-dev babel-preset-stage-1 $ npm install --save-dev babel-preset-stage-2 $ npm install --save-dev babel-preset-stage-3
hat einen Softlink für babel-node erstellt
$ cd / usr / local / bin $ ln -s ~ / local_babel / node_modules / babel-cli / bin / babel-node.js org-babel-node
.zshrc
export npm_config_prefix = $ HOME / .node_modules export PATH = $ PATH: $ HOME / .node_modules / bin
Fügte dies meiner init.el hinzu
(setenv "NODE_PATH" (concat "/ home / johnwind / local_babel / node_modules" ":" (getenv "NODE_PATH") ) )
Ausgabe
# + BEGIN_SRC js: cmd "org-babel-node --presets es2015" sei arr = [1, 2]; sei [x, y] = arr; console.log (x); console.log (y); # + END_SRC # + ERGEBNISSE: : 1 : 2 : nicht definiert
Im Moment habe ich sowohl eine lokale als auch eine globale Kopie von babel-cli, babel-core, babel-preset-es2015. Was mich immer noch nicht so recht umhüllen konnte, da es eine Art Verschwendung von Ressourcen ist.
Aber es funktioniert.
quelle
"strict"
in der ersten Zeile Ihres Quellcodes etwas hinzuzufügen ? Dies scheint der Fehler zu suggerieren."use strict"
nicht"strict"
, versuchen Sie das."use strict";
am Anfang hinzufügen .Antworten:
Dies ist ein Problem beim Übergang von Babel 6 zur ausschließlichen Verwendung von Plugins. Sie müssen das voreingestellte Plugin es2015 installieren:
und benötigen Sie es auch im Aufrufbefehl:
quelle
require ('babel-preset-es2015');
babel-preset-es2015
erfolgreich global installiert wurden, haben Sie wahrscheinlich ein Problem mit IhremNODE_PATH
. Was .babelrc betrifft, wirdbabel-node --presets es2015
dasselbe erreicht wie{ "presets": ["es2015"] }
in Ihrem .babelrc, daher ist ein .babelrc nicht unbedingt erforderlich. .babelrc wäre definitiv vorzuziehen, aber aus irgendeinem Grund berücksichtigt babel-node ~ / .babelrc auf meinem System nie.