139 votes

SyntaxError: Unexpected token fonction Asynchrone Attendent Nodejs

J'ai essayé à l'aide d'un Noeud version 6.2.1 avec certains de mon code. Avait des plans pour migrer la plupart de l'hyper-rappel orienté codes à quelque chose qui ressemble plus propre et peut-être de meilleures performances.

Je n'ai aucune idée pourquoi, le terminal déclenche un message d'erreur lorsque j'essaie d'exécuter le nœud code.

helloz.js

(async function testingAsyncAwait() {
    await console.log("For Trump's Sake Print me!");
})();

Les 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

Ce qui me manque? Merci de me jeter un peu de lumière sur la même.


Mise à jour 1:

J'ai essayé d'utiliser Babel Quentin suggéré, Mais, j'obtiens l'erreur suivante encore.

Mise À Jour Du Code

require("babel-core/register");
require("babel-polyfill");

    (async function testingAsyncAwait() {
        await console.log("For Trump's Sake Print me!");
    })();

Les 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("For Trump's Sake Print me!");
  5 | })();

189voto

Quentin Points 325526

Async fonctions sont pas pris en charge par le Nœud versions plus anciennes que la version 7.6.

Vous aurez besoin de transpile votre code (par exemple à l'aide de Babel) à une version de JS qui Nœud comprend si vous utilisez une version plus ancienne.

Cela dit, le courant (2018) LTS version de Node.js est 8.x, donc si vous utilisez une version antérieure, vous devez très fortement envisager une mise à niveau.

38voto

Phillipe Moreira Points 373

Nodejs prend en charge async/await à partir de la version 7.6.

Communiqué de la poste: https://v8project.blogspot.com.br/2016/10/v8-release-55.html

31voto

Nivesh Points 1681

Node.JS ne prend pas entièrement en charge l'ES6 actuellement, de sorte que vous pouvez utiliser asyncawait module ou transpile à l'aide de Bable.

installer

npm install --save asyncawait

helloz.js

var async = require('asyncawait/async');
var await = require('asyncawait/await');

(async (function testingAsyncAwait() {
    await (console.log("For Trump's Sake Print me!"));
}))();

19voto

stujo Points 1

Si vous êtes juste expérimenté, vous pouvez utiliser babel-node outil de ligne de commande pour essayer les nouvelles fonctions JavaScript

  1. Installez babel-cli dans votre projet

    $ npm install --save-dev babel-cli

  2. Installer les presets

    $ npm install --save-dev babel-preset-es2015 babel-preset-es2017

  3. Installation de votre babel presets

    Créer .babelrc dans le dossier racine du projet avec le contenu suivant:

    { "presets": ["es2015","es2017"] }

  4. Exécuter le script avec babel-node

    $ babel-node helloz.js

Ce n'est que pour le développement et de test, mais qui semble être ce que vous êtes en train de faire. En fin de compte, vous devrez configurer webpack (ou quelque chose de similaire) à transpile tout votre code de production

Si vous souhaitez exécuter le code ailleurs, webpack peut aider et ici, c'est la configuration la plus simple que j'ai pu faire:

12voto

novaline Points 2220

node v6.6.0

Si vous venez d'utiliser dans le développement. Vous pouvez faire ceci:

npm i babel-cli babel-plugin-transform-async-to-generator babel-polyfill --save-dev

l' package.json serait comme ceci:

"devDependencies": { "babel-cli": "^6.18.0", "babel-plugin-transform-async-to-generator": "^6.16.0", "babel-polyfill": "^6.20.0" }

créer .babelrc le fichier et écrire ceci:

{ "plugins": ["transform-async-to-generator"] }

et puis, exécutez votre async/await script comme ceci:

./node_modules/.bin/babel-node script.js

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X