Sto avendo difficoltà a convincere org-babel a valutare questo blocco di codice con
emacs v24.5
node v5.0.0
babel-node v.6.6.5
# + BEGIN_SRC js: cmd "nodo babele" let arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); # + END_SRC
L'output è simile al seguente
/ Tmp / babel-3700Vaq / js-script-37003RN: 2
let arr = [1, 2]; ^^^ SyntaxError: dichiarazioni nell'ambito del blocco (let, const, funzione, classe) non ancora supportate al di fuori della modalità rigorosa su 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. (funzione anonima) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) at Module.load (module.js: 356: 32) at Function.Module._load (module.js: 311: 12) at Function.Module.runMain (module.js: 457: 10) at /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 all'oggetto. (/Usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) at Module._compile (module.js: 425: 26) *
Ma questo blocco sorgente sembra a posto
# + BEGIN_SRC js: cmd "nodo babele" numeri const = [10,20,30,50]; const multiplyBy10 = numbers.map (a => a * 10); console.log (multiplyBy10); # + END_SRC # + RISULTATI: | 100 | 200 | 300 | 500 |
Modifica: aggiunta la funzione di auto-esecuzione con "usa rigoroso"
# + BEGIN_SRC js: cmd "nodo babele" (funzione xy () { "usa rigoroso"; let arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); }) () # + END_SRC # + RISULTATI:
L'output è simile al seguente
/ Tmp / babel-13529OHt / js-script-13529MVq: 6 let [x, y] = arr; ^ SyntaxError: token imprevisto [ su 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. (funzione anonima) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) at Module.load (module.js: 356: 32) at Function.Module._load (module.js: 311: 12) at Function.Module.runMain (module.js: 457: 10) at /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 all'oggetto. (/Usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) at Module._compile (module.js: 425: 26)
Modifica: grazie a @ebpa sono riuscito a risolverlo con
npm installa -g babel-preset-es2015
Questo è l'output che sto ottenendo dopo aver valutato il blocco sorgente predefinito, che non ha un wrapper di funzione auto-eseguibile.
/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372 genera un nuovo errore ("Impossibile trovare la preselezione" + JSON.stringify (val) + "relativo alla directory" + JSON.stringify (dirname)); ^ Errore: Impossibile trovare la preimpostazione "es2015" relativa alla directory "/ tmp / babel-270346ez" at /usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372:17 su Array.map (nativo) su OptionManager.resolvePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:364:20) su OptionManager.mergePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:348:10) su OptionManager.mergeOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:307:14) su 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. (funzione anonima) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) at Module.load (module.js: 356: 32)
Modifica: avvia un terminale ed esegue il nodo babel
> request ('babel-preset-es2015');
Produzione
Errore: Impossibile trovare il modulo 'babel-preset-es2015' at Function.Module._resolveFilename (module.js: 337: 15) at Function.Module._load (module.js: 287: 25) at Module.require (module.js: 366: 17) at request (module.js: 385: 17) a sostitu: 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) su 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) at REPLServer.runBound [come eval] (domain.js: 293: 12)
Modifica: un seguito per metterlo in funzione
Modifica: questo post mi ha dato qualche indizio su questo pezzo di puzzle
https://phabricator.babeljs.io/T6723
http://discuss.babeljs.io/t/error-parsing-jsx-with-global-installation-babel-preset-react/59/6
Modifica: finalmente ha funzionato installando una copia 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
creato un softlink per 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
Aggiunto questo al mio init.el
(setenv "NODE_PATH" (concat "/ home / johnwind / local_babel / node_modules" ":" (getenv "NODE_PATH") ) )
produzione
# + BEGIN_SRC js: cmd "org-babel-node --presets es2015" let arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); # + END_SRC # + RISULTATI: : 1 : 2 : non definito
Per ora ho una copia sia locale che globale di babel-cli, babel-core, babel-preset-es2015. Che ancora non riesco ancora a avvolgere la testa perché è una specie di spreco di risorse.
Ma funziona
"use strict"
non volesse dire "strict"
, provalo.
"use strict";
all'inizio.
"strict"
nella prima riga del tuo codice sorgente? Questo è ciò che sembra suggerire l'errore.