Estaba experimentando con la versión 6.2.1 de Node con parte de mi código. Tenía planes de migrar la mayoría de los códigos orientados a la hiper-devolución de llamada a algo que se vea más limpio y quizás funcione mejor.
No tengo ni idea de por qué, el terminal arroja un error cuando intento ejecutar el código del nodo.
helloz.js
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Registros
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
¿Qué me estoy perdiendo? Por favor, arrojame algo de luz sobre lo mismo.
Actualización 1:
Traté de usar Babel como sugirió Quentin, pero todavía recibo el siguiente error.
Código actualizado
require("babel-core/register");
require("babel-polyfill");
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Registros
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 | })();
Respuestas:
Las funciones asíncronas no son compatibles con las versiones de Node anteriores a la versión 7.6 .
Deberá transpilar su código (por ejemplo, usando Babel ) a una versión de JS que Node entienda si está usando una versión anterior.
Dicho esto, la versión LTS actual (2018) de Node.js es 8.x, por lo que si está utilizando una versión anterior, debería considerar la actualización.
fuente
Nodejs admite async / await desde la versión 7.6.
Publicación de lanzamiento: https://v8project.blogspot.com.br/2016/10/v8-release-55.html
fuente
Node.JS no es totalmente compatible ES6 actualmente, por lo que puede utilizar cualquiera asyncawait módulo o transpile usando bable.
Instalar en pc
helloz.js
fuente
Si solo está experimentando, puede usar la
babel-node
herramienta de línea de comandos para probar las nuevas funciones de JavaScriptInstalar
babel-cli
en su proyecto$ npm install --save-dev babel-cli
Instalar los presets
$ npm install --save-dev babel-preset-es2015 babel-preset-es2017
Configura tus presets de babel
Cree
.babelrc
en la carpeta raíz del proyecto con el siguiente contenido:{ "presets": ["es2015","es2017"] }
Ejecute su script con
babel-node
$ babel-node helloz.js
Esto es solo para desarrollo y pruebas, pero eso parece ser lo que está haciendo. Al final, querrá configurar el paquete web (o algo similar) para transpilar todo su código para la producción
Si desea ejecutar el código en otro lugar, webpack puede ayudar y aquí está la configuración más simple que pude resolver:
fuente
node v6.6.0
Si solo usa en desarrollo. Puedes hacerlo:
el
package.json
sería así:crear
.babelrc
archivo y escribir esto:y luego, ejecute su
async/await
script así:fuente
Aunque llego tarde, lo que funcionó para mí fue instalar transform-async-generator y el plugin transform-runtime así:
npm i babel-plugin-transform-async-to-generator babel-plugin-transform-runtime --save-dev
el
package.json
sería así:crear
.babelrc
archivo y escribir esto:y luego feliz codificación con
async/await
fuente
incluir y especificar la versión del motor de nodo a la última, digamos que en este momento agregué la versión 8.
en el siguiente archivo
fuente
Yo también tuve el mismo problema.
Estaba ejecutando el nodo v 6.2 junto con purgecss dentro de mi gulpfile. El problema solo ocurrió cuando creé un nuevo proyecto de Laravel; hasta ese momento, nunca tuve un problema con purgecss.
Siguiendo la declaración de @ Quentin, cómo las versiones de nodo anteriores a 7.6 no admiten funciones asíncronas, decidí actualizar mi versión de nodo a 9.11.2
Esto funcionó para mí:
1-
2-
eliminar 'node_modules' del directorio de ruta
3-
Todavía no estoy seguro de cómo funcionaba node / purgecss antes de la actualización ... pero esto funcionó.
fuente