Tengo dificultades para que org-babel evalúe este bloque de código con
emacs v24.5
nodo v5.0.0
babel-node v.6.6.5
# + BEGIN_SRC js: cmd "babel-node" dejar arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); # + END_SRC
La salida se ve así
/ tmp / babel-3700Vaq / js-script-37003RN: 2
dejar arr = [1, 2]; ^^^ SyntaxError: las declaraciones de ámbito de bloque (let, const, function, class) aún no se admiten fuera del modo estricto en exportaciones.runInThisContext (vm.js: 53: 16) en Module._compile (module.js: 404: 25) en el cargador (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) en Object.require.extensions. (función anónima) [como .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) en Module.load (module.js: 356: 32) en Function.Module._load (module.js: 311: 12) en Function.Module.runMain (module.js: 457: 10) en /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 en el objeto (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) en Module._compile (module.js: 425: 26) *
Pero este bloque fuente parece estar bien
# + BEGIN_SRC js: cmd "babel-node" números constantes = [10,20,30,50]; const multiplyBy10 = numbers.map (a => a * 10); console.log (multiplyBy10); # + END_SRC # + RESULTADOS: El | 100 200 300 500 |
Editar: Se agregó la función de ejecución automática con "uso estricto"
# + BEGIN_SRC js: cmd "babel-node" (función xy () { "uso estricto"; dejar arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); }) () # + END_SRC # + RESULTADOS:
La salida se ve así
/ tmp / babel-13529OHt / js-script-13529MVq: 6 let [x, y] = arr; ^ Error de sintaxis: símbolo inesperado [ en exportaciones.runInThisContext (vm.js: 53: 16) en Module._compile (module.js: 404: 25) en el cargador (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) en Object.require.extensions. (función anónima) [como .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) en Module.load (module.js: 356: 32) en Function.Module._load (module.js: 311: 12) en Function.Module.runMain (module.js: 457: 10) en /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 en el objeto (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) en Module._compile (module.js: 425: 26)
Editar: Gracias a @ebpa, he logrado resolverlo con
npm install -g babel-preset-es2015
Este es el resultado que obtengo después de evaluar el bloque fuente predeterminado, que no tiene un contenedor de funciones de ejecución automática.
/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372 lanzar un nuevo error ("No se pudo encontrar el preajuste" + JSON.stringify (val) + "relativo al directorio" + JSON.stringify (dirname)); ^ Error: No se pudo encontrar el preset "es2015" relativo al directorio "/ tmp / babel-270346ez" en /usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372:17 en Array.map (nativo) en OptionManager.resolvePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:364:20) en OptionManager.mergePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:348:10) en OptionManager.mergeOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:307:14) en OptionManager.init (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:465:10) en la compilación (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:81:45) en el cargador (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:14) en Object.require.extensions. (función anónima) [como .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) en Module.load (module.js: 356: 32)
Editar: Encienda una terminal y ejecutó babel-node
> require ('babel-preset-es2015');
Salida
Error: no se puede encontrar el módulo 'babel-preset-es2015' en Function.Module._resolveFilename (module.js: 337: 15) en Function.Module._load (module.js: 287: 25) en Module.require (module.js: 366: 17) en require (module.js: 385: 17) en la respuesta: 1: 1 en Object.exports.runInThisContext (vm.js: 54: 17) en _eval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:102:26) en REPLServer.replEval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:187:14) en el límite (domain.js: 280: 14) en REPLServer.runBound [como eval] (domain.js: 293: 12)
Editar: un seguimiento para ponerlo en funcionamiento
Editar: Esta publicación me dio alguna pista sobre esta pieza de rompecabezas
https://phabricator.babeljs.io/T6723
http://discuss.babeljs.io/t/error-parsing-jsx-with-global-installation-babel-preset-react/59/6
Editar: Finalmente lo hice funcionar instalando una copia local
$ 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
creó un enlace suave para 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
Agregué esto a mi init.el
(setenv "NODE_PATH" (concat "/ home / johnwind / local_babel / node_modules" ":" (getenv "NODE_PATH") ) )
salida
# + BEGIN_SRC js: cmd "org-babel-node --presets es2015" dejar arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); # + END_SRC # + RESULTADOS: : 1 : 2 : indefinido
Por ahora tengo una copia local y global de babel-cli, babel-core, babel-preset-es2015. Lo que todavía no podía entender por completo, ya que es una pérdida de recursos.
Pero funciona.
"use strict"
no quiso decir "strict"
, inténtalo.
"use strict";
al principio.
"strict"
la primera línea de tu código fuente? Esto es lo que parece sugerir el error.