J'ai du mal à obtenir org-babel pour évaluer ce bloc de code avec
emacs v24.5
node v5.0.0
babel-node v.6.6.5
# + BEGIN_SRC js: cmd "babel-node" soit arr = [1, 2]; soit [x, y] = arr; console.log (x); console.log (y); # + END_SRC
La sortie ressemble à ceci
/ tmp / babel-3700Vaq / js-script-37003RN: 2
soit arr = [1, 2]; ^^^ SyntaxError: déclarations de portée de bloc (let, const, fonction, classe) non encore prises en charge en dehors du mode strict à exports.runInThisContext (vm.js: 53: 16) à Module._compile (module.js: 404: 25) au chargeur (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5)) sur Object.require.extensions. (fonction anonyme) [comme .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) à Module.load (module.js: 356: 32) à Function.Module._load (module.js: 311: 12) sur Function.Module.runMain (module.js: 457: 10) à /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 à Object. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) sur Module._compile (module.js: 425: 26) *
Mais ce bloc source semble bien
# + BEGIN_SRC js: cmd "babel-node" const const = [10,20,30,50]; const multiplyBy10 = numéros.map (a => a * 10); console.log (multiplyBy10); # + END_SRC # + RÉSULTATS: | 100 | 200 | 300 | 500 |
Edit: Ajout de la fonction auto-exécutable avec "use strict"
# + BEGIN_SRC js: cmd "babel-node" (fonction xy () { "utiliser strict"; soit arr = [1, 2]; soit [x, y] = arr; console.log (x); console.log (y); }) () # + END_SRC # + RÉSULTATS:
La sortie ressemble à ceci
/ tmp / babel-13529OHt / js-script-13529MVq: 6 soit [x, y] = arr; ^ SyntaxError: jeton inattendu [ à exports.runInThisContext (vm.js: 53: 16) à Module._compile (module.js: 404: 25) au chargeur (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5)) sur Object.require.extensions. (fonction anonyme) [comme .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) à Module.load (module.js: 356: 32) à Function.Module._load (module.js: 311: 12) sur Function.Module.runMain (module.js: 457: 10) à /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 à Object. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) à Module._compile (module.js: 425: 26)
Edit: Grâce à @ebpa, j'ai réussi à le résoudre avec
npm install -g babel-preset-es2015
C'est la sortie que j'obtiens après avoir évalué le bloc source par défaut, qui n'a pas de wrapper de fonction auto-exécutable.
/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372 jeter une nouvelle erreur ("Impossible de trouver le préréglage" + JSON.stringify (val) + "par rapport au répertoire" + JSON.stringify (dirname)); ^ Erreur: impossible de trouver le préréglage "es2015" par rapport au répertoire "/ tmp / babel-270346ez" à /usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372:17 sur Array.map (natif) sur OptionManager.resolvePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:364:20) sur OptionManager.mergePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:348:10) sur OptionManager.mergeOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:307:14) sur OptionManager.init (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:465:10) lors de la compilation (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:81:45) au chargeur (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:14) sur Object.require.extensions. (fonction anonyme) [comme .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) à Module.load (module.js: 356: 32)
Edit: Lancez un terminal et exécutez babel-node
> require ('babel-preset-es2015');
Production
Erreur: impossible de trouver le module 'babel-preset-es2015' à Function.Module._resolveFilename (module.js: 337: 15) à Function.Module._load (module.js: 287: 25) à Module.require (module.js: 366: 17) au besoin (module.js: 385: 17) au repl: 1: 1 sur Object.exports.runInThisContext (vm.js: 54: 17) à _eval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:102:26) sur REPLServer.replEval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:187:14) à lié (domain.js: 280: 14) sur REPLServer.runBound [comme eval] (domain.js: 293: 12)
Edit: un suivi pour le mettre en service
Edit: Ce post m'a donné un indice sur cette pièce de puzzle
https://phabricator.babeljs.io/T6723
http://discuss.babeljs.io/t/error-parsing-jsx-with-global-installation-babel-preset-react/59/6
Edit: Enfin, il a fonctionné en installant une copie locale
$ 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
créé un softlink pour babel-node
$ 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
Ajouté ceci à mon init.el
(setenv "NODE_PATH" (concat "/ home / johnwind / local_babel / node_modules" ":" (getenv "NODE_PATH") ) )
production
# + BEGIN_SRC js: cmd "org-babel-node --presets es2015" soit arr = [1, 2]; soit [x, y] = arr; console.log (x); console.log (y); # + END_SRC # + RÉSULTATS: : 1 : 2 : indéfini
Pour l'instant, j'ai une copie locale et globale de babel-cli, babel-core, babel-preset-es2015. Ce qui ne pouvait toujours pas me permettre de comprendre cela, car c'est une sorte de gaspillage de ressources.
Mais ça marche.
la source
"strict"
la première ligne de votre code source? C'est ce que l'erreur semble suggérer."use strict"
ne voulait pas dire"strict"
, essayez ça."use strict";
au début.Réponses:
Il s'agit d'un problème lié à la transition de Babel 6 vers l'utilisation exclusive de plugins. Vous devez installer le plugin prédéfini es2015:
et l'exigent également dans la commande d'invocation:
la source
require ('babel-preset-es2015');
pour voir qu'il est installé et accessiblebabel-preset-es2015
été installé avec succès dans le monde, vous avez probablement un problème avec votreNODE_PATH
. Dans la mesure où .babelrc vababel-node --presets es2015
accomplit la même chose que{ "presets": ["es2015"] }
dans votre .babelrc, donc un .babelrc n'est pas strictement nécessaire. .babelrc serait certainement préféré, mais pour une raison quelconque, babel-node ne considère jamais ~ / .babelrc sur mon système.