You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS脚本中async函数无法正常运行的问题求助

问题解答:Node 10.3.0中await报错的原因及解决办法

嘿,别担心,这绝对是Node.js新手常会碰到的坑!我来帮你理清楚问题所在:

为什么浏览器能运行,Node 10.3.0不行?

现代浏览器的ES模块环境(比如用<script type="module">引入代码时)已经支持顶层await——也就是在全局/顶层作用域直接使用await关键字。但Node.js 10.3.0的版本还不支持这个特性:当时顶层await还处于TC39提案阶段,直到Node.js v14.8.0才默认启用该特性,更早的版本(比如v13.x)也需要通过实验性标志才能开启,而v10.3.0完全没有这个支持。

你的代码里const test = await testAsync();这一行是直接写在顶层作用域的,没有包裹在任何async函数内部,这就触发了Node 10.3.0的语法错误。

解决办法

最稳妥且兼容Node 10.3.0的方案,是把顶层的await调用放到一个async函数里执行:

async function testAsync() {
  return await new Promise(function(resolve) {
    setTimeout(function() {
      resolve('Hello World!');
    }, 1000);
  });
}

// 新增一个async函数来包裹await调用
async function run() {
  const test = await testAsync();
  console.log(test);
}

// 执行这个函数
run();

如果你之后升级到Node.js v14.8.0或更高版本,就可以直接使用顶层await了(需要确保你的脚本是ES模块,比如把文件后缀改成.mjs,或者在package.json里设置"type": "module")。

内容的提问来源于stack exchange,提问作者jBoive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:06:59