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.
fuente
"strict"
la primera línea de tu código fuente? Esto es lo que parece sugerir el error."use strict"
no quiso decir"strict"
, inténtalo."use strict";
al principio.Respuestas:
Este es un problema con la transición de Babel 6 al uso exclusivo de complementos. Debe instalar el complemento preestablecido es2015:
y también lo requieren en el comando de invocación:
fuente
require ('babel-preset-es2015');
para ver que está instalado y accesiblebabel-preset-es2015
se instaló correctamente a nivel mundial, probablemente tenga un problema con suNODE_PATH
. En lo que respecta a .babelrc,babel-node --presets es2015
logra lo mismo que{ "presets": ["es2015"] }
en su .babelrc, por lo que un .babelrc no es estrictamente necesario. Definitivamente se preferiría .babelrc, pero por alguna razón babel-node nunca considera ~ / .babelrc en mi sistema.