Javascript Babel节点脚本失败,错误为';意外标记';syntaxError on';等待&x27;线

Javascript Babel节点脚本失败,错误为';意外标记';syntaxError on';等待&x27;线,javascript,node.js,asynchronous,async-await,babeljs,Javascript,Node.js,Asynchronous,Async Await,Babeljs,我有一个从Firebase读取大量信息的脚本,然后处理它。这涉及到对外部数据源的一些异步调用,我想使用async和await。我已经在这个npm项目中成功地完成了这项工作,所以我不明白为什么它现在不起作用。这是我的.babelrc文件: { “预设”:[“es2015”、“第0阶段”、“反应”], “插件”:[“语法异步函数”,“转换再生器”] }您只能在标记为async的函数中使用wait。在您的例子中,您正在一个未标记为的函数(对.then()的回调)中运行它 您可以使用以下选项: ret

我有一个从Firebase读取大量信息的脚本,
然后处理它。这涉及到对外部数据源的一些异步调用,我想使用
async
await
。我已经在这个npm项目中成功地完成了这项工作,所以我不明白为什么它现在不起作用。这是我的.babelrc文件:

{
“预设”:[“es2015”、“第0阶段”、“反应”],
“插件”:[“语法异步函数”,“转换再生器”]

}
您只能在标记为
async
的函数中使用
wait
。在您的例子中,您正在一个未标记为的函数(对
.then()
的回调)中运行它

您可以使用以下选项:

return dbRef.once('value').then(async function(snapshot) { ... });
但是,由于您已经在使用
async/await
,您最好将代码重写为:

async function getAllFirebaseDocs(dbRef) {
  let snapshot = await dbRef.once('value');
  let items    = snapshot.val();
  for (let key in items) {
    let priceUrl = "some.url.com"
    items[key] = await requestPrices(items[key], priceUrl);
  }
  // I assume that you want to return `items`; your original code doesn't return anything.
  return items;
}

只能在标记为
async
的函数中使用
wait
。在您的例子中,您正在一个未标记为的函数(对
.then()
的回调)中运行它

您可以使用以下选项:

return dbRef.once('value').then(async function(snapshot) { ... });
但是,由于您已经在使用
async/await
,您最好将代码重写为:

async function getAllFirebaseDocs(dbRef) {
  let snapshot = await dbRef.once('value');
  let items    = snapshot.val();
  for (let key in items) {
    let priceUrl = "some.url.com"
    items[key] = await requestPrices(items[key], priceUrl);
  }
  // I assume that you want to return `items`; your original code doesn't return anything.
  return items;
}

在这两种情况下(内联异步和重新排列的异步),它都给了我一个新的错误:
您为我们提供了节点类型“ForAwaitStatement”的访问者,但它不是有效的类型
。没有告诉我发生这种情况的行号。啊,我解决了它;将我的babel core升级到6.18.2,并从我的.babelrc文件中删除了“stage-0”。现在我的脚本可以工作了,谢谢:)在这两种情况下(内联异步和重新排列异步),它都给了我一个新的错误:
您给我们提供了节点类型“ForAwaitStatement”的访问者,但它不是有效的类型
。没有告诉我发生这种情况的行号。啊,我解决了它;将我的babel core升级到6.18.2,并从我的.babelrc文件中删除了“stage-0”。现在我的脚本可以工作了,谢谢:)