2017-09-19 1 views
4

Warum erhalte ich diesen Fehler Wenn ich async verwende?SyntaxError: fehlt) nach Argumentliste, bei Verwendung von Async

Mein 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); 
}); 

Fehler:

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

Ich verwende node.js v6.11.0 mit "Abhängigkeiten":

{ "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" }, 
+0

Ihr Umfeld Unterstützung async/await Syntax? – Bergi

+0

Ich verwende node.js v6.11.0 mit "Abhängigkeiten": { "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-telegramm-bot-api ":"^0.27. 1 ", " Anfrage ":"^2.81.0 " }, –

+0

6.11.0, Das ist okey in meinem Spielplatz, aber wenn ich mit' node index.js' laufen will, bekomme ich diesen Fehler, vielleicht ist das für es6 oder ... –

Antwort

4

Ihre Version von NodeJS (6.11 LTS) ist zu alt und tut es unterstützt nicht die async/await Funktionen. Der Syntaxfehler ist ein Ergebnis des Javascript-Interpreters, der das Token async nicht erkennt und über Argumente verwirrt wird.

Upgrade auf NodeJS 7.6 oder höher. https://www.infoq.com/news/2017/02/node-76-async-await

In früheren Versionen ist die einzige Möglichkeit, asynchrones Verhalten durchzuführen, promises zu verwenden.

+0

Gibt es eine Möglichkeit, Async in node.js 6 zu verwenden? Weil ich in Android-Server mit 'dory node' Anwendung ausführen möchte –

+1

Es gibt andere Möglichkeiten, asynchrone Arbeit, wie Versprechen oder Streams zu tun. Die Schlüsselwörter "async" und "await" können jedoch in älteren Versionen nicht verwendet werden. – Soviut

2

Wenn Sie Ihre Knotenversion nicht aktualisieren möchten/können, versuchen Sie es mit Babel-Voreinstellungen. Ich hatte den gleichen Fehler mit ES6 mit Jest (Knoten v6.9.1).

Fügen Sie einfach diese zwei Module an Ihre Abhängigkeiten

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

und fügen Sie eine Datei .babelrc zu Ihrem Root-Verzeichnis mit dem folgenden Code:

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

Und wenn Sie nicht verwenden es bereits, installieren Sie babel-cli und führen Sie Ihre Anwendung mit babel-node Befehl

sudo npm install -g babel-cli

babel-node app.js

Verwandte Themen