J'essayais d'utiliser la version 6.2.1 de Node avec une partie de mon code. Avait prévu de migrer la plupart des codes orientés hyper-rappel vers quelque chose qui semble plus propre et peut-être plus performant.
Je n'ai aucune idée de pourquoi, le terminal génère une erreur lorsque j'essaye d'exécuter le code du nœud.
helloz.js
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Journaux-
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'est-ce que je rate? Veuillez me jeter un peu de lumière sur la même chose.
Mise à jour 1:
J'ai essayé d'utiliser Babel comme l'a suggéré Quentin, mais j'obtiens toujours l'erreur suivante.
Code mis à jour
require("babel-core/register");
require("babel-polyfill");
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Journaux-
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 | })();
Réponses:
Les fonctions Async ne sont pas prises en charge par les versions de Node antérieures à la version 7.6 .
Vous devrez transpiler votre code (par exemple en utilisant Babel ) dans une version de JS que Node comprend si vous utilisez une version plus ancienne.
Cela dit, la version LTS actuelle (2018) de Node.js est 8.x, donc si vous utilisez une version antérieure, vous devriez très fortement envisager la mise à niveau.
la source
Nodejs prend en charge async / await à partir de la version 7.6.
Publication de publication: https://v8project.blogspot.com.br/2016/10/v8-release-55.html
la source
Node.JS ne prend pas entièrement en charge ES6 actuellement, vous pouvez donc soit utiliser le module asyncawait, soit le transpiler à l'aide de Bable.
installer
helloz.js
la source
Si vous faites juste des expériences, vous pouvez utiliser l'
babel-node
outil de ligne de commande pour essayer les nouvelles fonctionnalités JavaScriptInstallez
babel-cli
dans votre projet$ npm install --save-dev babel-cli
Installez les préréglages
$ npm install --save-dev babel-preset-es2015 babel-preset-es2017
Configurez vos préréglages Babel
Créez
.babelrc
dans le dossier racine du projet avec le contenu suivant:{ "presets": ["es2015","es2017"] }
Exécutez votre script avec
babel-node
$ babel-node helloz.js
C'est uniquement pour le développement et les tests, mais cela semble être ce que vous faites. En fin de compte, vous voudrez configurer Webpack (ou quelque chose de similaire) pour transpiler tout votre code pour la production
Si vous souhaitez exécuter le code ailleurs, webpack peut vous aider et voici la configuration la plus simple que je pourrais élaborer:
la source
node v6.6.0
Si vous utilisez simplement en développement. Tu peux le faire:
le
package.json
serait comme ceci:créez un
.babelrc
fichier et écrivez ceci:puis, exécutez votre
async/await
script comme ceci:la source
Bien que j'arrive en retard, ce qui a fonctionné pour moi était d'installer le plugin transform-async-generator et transform-runtime comme ceci:
npm i babel-plugin-transform-async-to-generator babel-plugin-transform-runtime --save-dev
le
package.json
serait comme ceci:créez un
.babelrc
fichier et écrivez ceci:puis bon codage avec
async/await
la source
inclure et spécifier la version la plus récente du moteur de nœud, disons qu'à ce moment-là, j'ai ajouté la version 8.
dans le fichier suivant
la source
J'ai aussi eu le même problème.
J'utilisais node v 6.2 en plus d'utiliser purgecss dans mon gulpfile. Le problème est survenu uniquement lorsque j'ai créé un nouveau projet Laravel; jusque-là, je n'ai jamais eu de problème avec purgecss.
Suite à la déclaration de @ Quentin - comment les versions de nœud antérieures à 7.6 ne prennent pas en charge les fonctions asynchrones - j'ai décidé de mettre à jour ma version de nœud vers la 9.11.2
Cela a fonctionné pour moi:
1-
2-
supprimer 'node_modules' du répertoire de route
3-
Je ne sais toujours pas comment le nœud / purgecss fonctionnait avant la mise à jour ... mais cela a fait l'affaire.
la source