【发布时间】:2018-02-28 15:01:33
【问题描述】:
为什么我在使用 async 时会收到此错误?
我的代码:
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);
});
错误:
bot.onText(/\/start/, async msg => {
^^^^^
SyntaxError: missing ) after argument list
我正在使用带有“依赖项”的 node.js v6.11.0:
{ "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" },
【问题讨论】:
-
异步/等待是 ES2017。 IIRC 节点直到 7.10 版才获得异步/等待。
-
babel-polyfill不修复语法错误,只修复“API”相关的东西(Map、Set、Array...)。您需要调用babel将您的代码转换为可运行的版本。我通常使用babel-node这样做。 -
如果您先通过 babel 运行代码以生成 ES6,然后再使用 Node.js 运行,这将起作用。
-
@Amy 我认为它的 async/await 默认情况下从 Node v7.6 启用。 Sedric 你能把你的节点版本升级到 > 8.x 吗?如果可以tj/n - 节点的版本管理器会让它变得超级简单。
-
@SedricHeidarizarei 不,这是最新的 LTS 版本。当前版本是 8.5。
标签: javascript node.js async-await telegram-bot