Estou tendo dificuldade em obter o org-babel para avaliar este bloco de código com
nó do emacs v24.5 v5.0.0 nó
babel v.6.6.5
# + BEGIN_SRC js: cmd "nó de babel" let arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); # + END_SRC
A saída é assim
/ tmp / babel-3700Vaq / js-script-37003RN: 2
let arr = [1, 2]; ^^^ SyntaxError: Declarações com escopo em bloco (let, const, function, class) ainda não suportadas fora do modo estrito em export.runInThisContext (vm.js: 53: 16) em Module._compile (module.js: 404: 25) no carregador (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) em Object.require.extensions. (função anônima) [como .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) em Module.load (module.js: 356: 32) em Function.Module._load (module.js: 311: 12) em Function.Module.runMain (module.js: 457: 10) em /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 no objeto. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) em Module._compile (module.js: 425: 26) *
Mas esse bloco de origem parece bom
# + BEGIN_SRC js: cmd "nó de babel" números const = [10,20,30,50]; const multiplyBy10 = numbers.map (a => a * 10); console.log (multiplyBy10); # + END_SRC # + RESULTADOS: | 100 200 300 500
Edit: Adicionado função de execução automática com "use strict"
# + BEGIN_SRC js: cmd "nó de babel" (função xy () { "use strict"; let arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); }) () # + END_SRC # + RESULTADOS:
A saída é assim
/ tmp / babel-13529OHt / js-script-13529MVq: 6 let [x, y] = arr; ^ SyntaxError: token inesperado [ em export.runInThisContext (vm.js: 53: 16) em Module._compile (module.js: 404: 25) no carregador (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) em Object.require.extensions. (função anônima) [como .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) em Module.load (module.js: 356: 32) em Function.Module._load (module.js: 311: 12) em Function.Module.runMain (module.js: 457: 10) em /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 no objeto. (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) em Module._compile (module.js: 425: 26)
Edit: Graças a @ebpa eu consegui resolver isso com
npm install -g babel-preset-es2015
Esta é a saída que estou obtendo após avaliar o bloco de origem padrão, que não possui um wrapper de função auto-executável.
/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372 throw new Error ("Não foi possível encontrar a predefinição" + JSON.stringify (val) + "relativo ao diretório" + JSON.stringify (dirname)); ^ Erro: não foi possível encontrar a predefinição "es2015" relativa ao diretório "/ tmp / babel-270346ez" em /usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:372:17 em Array.map (nativo) em OptionManager.resolvePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:364:20) em OptionManager.mergePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:348:10) em OptionManager.mergeOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:307:14) em OptionManager.init (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:465:10) na compilação (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:81:45) no carregador (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:14) em Object.require.extensions. (função anônima) [como .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) em Module.load (module.js: 356: 32)
Edit: Inicie um terminal e execute o nó babel
> require ('babel-preset-es2015');
Resultado
Erro: Não foi possível encontrar o módulo 'babel-preset-es2015' em Function.Module._resolveFilename (module.js: 337: 15) em Function.Module._load (module.js: 287: 25) em Module.require (module.js: 366: 17) em require (module.js: 385: 17) no repl: 1: 1 em 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) em REPLServer.replEval (/home/johnwind/.nvm/versions/node/v5.0.0/lib/node_modules/babel-cli/lib/_babel-node.js:187:14) no limite (domain.js: 280: 14) em REPLServer.runBound [como avaliação] (domain.js: 293: 12)
Edit: Um acompanhamento para colocá-lo em funcionamento
Edit: Este post me deu algumas dicas para este pedaço de quebra-cabeça
https://phabricator.babeljs.io/T6723
http://discuss.babeljs.io/t/error-parsing-jsx-with-global-installation-babel-preset-react/59/6
Edit: Finalmente consegui instalar uma cópia 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
criou um softlink para babel-node
$ cd / usr / local / bin $ ln -s ~ / local_babel / node_modules / babel-cli / bin / babel-node.js org-babel-node
.zshrc
exportar npm_config_prefix = $ HOME / .node_modules exportar PATH = $ PATH: $ HOME / .node_modules / bin
Adicionei isso ao meu init.el
(setenv "NODE_PATH" (concat "/ home / johnwind / local_babel / node_modules" ":" (getenv "NODE_PATH") ) )
resultado
# + BEGIN_SRC js: cmd "nó-org-babel --presets es2015" let arr = [1, 2]; let [x, y] = arr; console.log (x); console.log (y); # + END_SRC # + RESULTADOS: : 1 : 2 : Indefinido
Por enquanto, tenho cópia local e global de babel-cli, babel-core, babel-preset-es2015. O que ainda não conseguia entender tudo isso, pois é uma espécie de desperdício de recursos.
Mas funciona.
fonte
"strict"
na primeira linha do seu código-fonte? Isto é o que o erro parece sugerir."use strict"
não significava"strict"
, tente isso."use strict";
no início.Respostas:
Esse é um problema com a transição do Babel 6 para o uso exclusivo de plug-ins. Você precisa instalar o plugin predefinido es2015:
e também requerê-lo no comando de chamada:
fonte
require ('babel-preset-es2015');
para ver que ele está instalado e acessívelbabel-preset-es2015
foi instalado com sucesso em todo o mundo, você provavelmente tem um problema com o seuNODE_PATH
. No que diz respeito ao .babelrc,babel-node --presets es2015
realiza o mesmo que{ "presets": ["es2015"] }
no seu .babelrc, portanto, um .babelrc não é estritamente necessário. O .babelrc seria definitivamente o preferido, mas por algum motivo o babel-node nunca considera ~ / .babelrc no meu sistema.