web-dev-qa-db-fra.com

SyntaxError: manquant) après la liste des arguments, lors de l'utilisation de async

Pourquoi est-ce que j'obtiens cette erreur lorsque j'utilise async?

Mon code:

bot.onText(/\/start/, async  msg => {
  const opts = {
    parse_mode: 'Markdown' ,
    reply_markup: JSON.stringify({
      keyboard: StartKeyboard,
      resize_keyboard: true,
      one_time_keyboard: true
    })
  };
  await bot.sendMessage(msg.chat.id, 'Hi', opts);
});

Erreur:

bot.onText(/\/start/, async  msg => {
                      ^^^^^
SyntaxError: missing ) after argument list

J'utilise node.js v6.11.0 avec des "dépendances":

{ "babel-polyfill": "^6.23.0",
  "cheerio": "^1.0.0-rc.2",
  "dotenv": "^4.0.0",
  "firebase": "^4.1.2",
  "firebase-admin": "^5.0.0",
  "node-telegram-bot-api": "^0.27.1",
  "request": "^2.81.0" },
15
Sedric Heidarizarei

Votre version de NodeJS (6.11 LTS) est trop ancienne et ne prend pas en charge le async/await traits. L'erreur de syntaxe est due au fait que l'interpréteur Javascript ne reconnaît pas le jeton async et se trompe sur les arguments.

Mettez à niveau vers NodeJS 7.6 ou version ultérieure. https://www.infoq.com/news/2017/02/node-76-async-await

Dans les versions précédentes, la seule façon d'effectuer un comportement asynchrone était d'utiliser promesses .

16
Soviut

Si vous ne voulez pas/ne pouvez pas mettre à jour votre version de nœud, essayez d'utiliser les préréglages babel. J'ai eu la même erreur en utilisant ES6 avec plaisanterie (noeud v6.9.1).

Ajoutez simplement ces deux modules à vos dépendances

npm install --save babel-preset-es2015 babel-preset-stage-0

Et ajoutez un fichier .babelrc dans votre répertoire racine avec le code suivant:

{ "presets": ["es2015", "stage-0"] }

Et si vous ne l'utilisez pas déjà, installez babel-cli et exécutez votre application avec babel-node commande

Sudo npm install -g babel-cli

babel-node app.js
3
Thiago Loddi