Eu estava experimentando usar o Node versão 6.2.1 com parte do meu código. Tinha planos de migrar a maioria dos códigos orientados a hiperlinks para algo que parece mais limpo e talvez tenha um desempenho melhor.
Não tenho idéia do porquê, o terminal lança um erro quando tento executar o código do nó.
helloz.js
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Histórico-
BOZZMOB-M-T0HZ:rest bozzmob$ node helloz.js
/Users/bozzmob/Documents/work/nextgennms/rest/helloz.js:1
(function (exports, require, module, __filename, __dirname) { (async function testingAsyncAwait() {
^^^^^^^^
SyntaxError: Unexpected token function
at Object.exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:456:3
BOZZMOB-M-T0HZ:rest bozzmob$ node -v
v6.2.1
o que estou perdendo? Por favor, jogue-me alguma luz sobre o mesmo.
Atualização 1:
Tentei usar Babel como sugerido por Quentin, mas ainda estou recebendo o seguinte erro.
Código atualizado-
require("babel-core/register");
require("babel-polyfill");
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Histórico-
BOZZMOB-M-T0HZ:rest bozzmob$ babel helloz.js > helloz.trans.js
SyntaxError: helloz.js: Unexpected token (3:7)
1 | require("babel-polyfill");
2 |
> 3 | (async function testingAsyncAwait() {
| ^
4 | await console.log("Print me!");
5 | })();
javascript
node.js
express
asynchronous
async-await
bozzmob
fonte
fonte
Respostas:
As funções assíncronas não são suportadas pelas versões do Node anteriores à versão 7.6 .
Você precisará transpilar seu código (por exemplo, usando Babel ) para uma versão do JS que o Node entenda se você estiver usando uma versão mais antiga.
Dito isso, a versão LTS atual (2018) do Node.js é 8.x, portanto, se você estiver usando uma versão anterior, considere fortemente atualizar.
fonte
O Nodejs suporta async / waitit da versão 7.6.
Publicação de publicação: https://v8project.blogspot.com.br/2016/10/v8-release-55.html
fonte
O Node.js não suporta totalmente ES6 atualmente, então você pode usar asyncawait módulo ou transpile -lo usando Bable.
instalar
helloz.js
fonte
Se você está apenas experimentando, pode usar a
babel-node
ferramenta de linha de comando para experimentar os novos recursos do JavaScriptInstale
babel-cli
no seu projeto$ npm install --save-dev babel-cli
Instale as predefinições
$ npm install --save-dev babel-preset-es2015 babel-preset-es2017
Configure suas predefinições de babel
Crie
.babelrc
na pasta raiz do projeto com o seguinte conteúdo:{ "presets": ["es2015","es2017"] }
Execute seu script com
babel-node
$ babel-node helloz.js
Isso é apenas para desenvolvimento e teste, mas isso parece ser o que você está fazendo. No final, você desejará configurar o webpack (ou algo semelhante) para transpilar todo o seu código para produção
Se você deseja executar o código em outro lugar, o webpack pode ajudar e aqui está a configuração mais simples que eu poderia resolver:
fonte
node v6.6.0
Se você apenas usa no desenvolvimento. Você consegue fazer isso:
o
package.json
seria assim:crie um
.babelrc
arquivo e escreva isto:e, em seguida, execute seu
async/await
script assim:fonte
Embora eu esteja chegando atrasado, o que funcionou para mim foi instalar o plugin transform-async-generator e transform-runtime da seguinte forma:
npm i babel-plugin-transform-async-to-generator babel-plugin-transform-runtime --save-dev
o
package.json
seria assim:crie um
.babelrc
arquivo e escreva isto:e então feliz codificação com
async/await
fonte
inclua e especifique a versão do mecanismo do nó para a mais recente, digamos que nesse momento eu adicionei a versão 8.
no seguinte arquivo
fonte
Eu também tive o mesmo problema.
Eu estava executando o nó v 6.2 juntamente com o purgecss no meu gulpfile. O problema ocorreu apenas quando criei um novo projeto do Laravel; até aquele momento, eu nunca tive um problema com o purgecss.
Seguindo a declaração de @ Quentin - como as versões de nó anteriores à 7.6 não suportam funções assíncronas - decidi atualizar a versão do nó para 9.11.2
Isso funcionou para mim:
1-
2-
exclua 'node_modules' do diretório de rotas
3-
Ainda não tenho certeza de como o node / purgecss funcionou antes da atualização .. mas isso funcionou.
fonte