Javascript 使用异步时,参数列表后的SyntaxError:缺少)

Javascript 使用异步时,参数列表后的SyntaxError:缺少),javascript,node.js,async-await,telegram-bot,Javascript,Node.js,Async Await,Telegram Bot,为什么在使用async时会出现此错误 我的代码: bot.onText(/\/start/, async msg => { const opts = { parse_mode: 'Markdown' , reply_markup: JSON.stringify({ keyboard: StartKeyboard, resize_keyboard: true, one_time_keyboard: true }) };

为什么在使用
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
错误:

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与“依赖项”一起使用:

您的NodeJS(6.11 LTS)版本太旧,不支持
async/await
功能。语法错误是由于Javascript解释器无法识别
async
标记,并且对参数感到困惑

升级到NodeJS 7.6或更高版本


在以前的版本中,执行异步行为的唯一方法是使用。

如果不想/无法更新节点版本,请尝试使用babel预设。 我在使用ES6和jest(NodeV6.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

异步/等待是ES2017。IIRC节点直到7.10版才获得async/await。
babel polyfill
不修复语法错误,只修复与“API”相关的内容(映射、设置、数组…)。您需要调用
babel
将代码转换为可运行版本。我通常使用
babel node
来执行此操作。如果您先通过babel运行代码以生成ES6,然后再使用node运行它,那么这将起作用。@Amy我认为默认情况下从node v7.6启用了async/await。塞德里克:你能把你的节点版本提高到>8.x吗?如果可以的话-node的版本管理器将使它变得非常简单。@sedricheidarizarie不,这是最新的LTS版本。当前版本是8.5。有没有办法在node.js 6中使用async?因为我想在android服务器上运行带有
dory node
application的应用程序,所以还有其他方法来做异步工作,比如承诺或流。但是,
async
await
关键字不能在旧版本中使用。在Node.js v14.15.0上仍然出现此错误。@Kristian您确定这是在异步/await情况下发生的,还是只是语法错误?