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.
"use strict"
ne voulait pas dire "strict"
, essayez ça.
"use strict";
au début.
"strict"
la première ligne de votre code source? C'est ce que l'erreur semble suggérer.