为什么我在使用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和“dependencies”:
{ "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 :(得分:15)
您的NodeJS版本(6.11 LTS)太旧,不支持async/await
功能。语法错误是Javascript解释器无法识别async
令牌并对参数感到困惑的结果。
升级到NodeJS 7.6或更高版本。 https://www.infoq.com/news/2017/02/node-76-async-await
在以前的版本中,执行异步行为的唯一方法是使用promises。
答案 1 :(得分:3)
如果您不想/不能更新节点版本,请尝试使用babel预设。 使用ES6和jest(节点v6.9.1)时出现了同样的错误。
只需将这两个模块添加到您的依赖项
即可npm install --save babel-preset-es2015 babel-preset-stage-0
使用以下代码将文件.babelrc
添加到根目录:
{ "presets": ["es2015", "stage-0"] }
如果您尚未使用它,请安装babel-cli
并使用babel-node
命令运行您的应用程序
sudo npm install -g babel-cli
babel-node app.js