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

使用async函数配合ngrok开发时出现未捕获错误该如何解决?

问题原因

代码的核心问题是在不支持顶层await的环境中直接在全局作用域使用await关键字:
await语法仅允许在两类场景下使用:

  • async修饰的函数内部
  • 符合ES Module规范的脚本顶层
    默认的Node.js CommonJS环境、浏览器端普通脚本都不支持顶层await,你最后一行直接写let url = await getUrl()会直接抛出语法错误,和两处url变量的类型无关。
修复方案

方案1:用自执行async函数包裹逻辑

将所有用到顶层await的代码放到自执行的async函数内部即可:

const ngrok = require('ngrok'); // 确保已提前安装并引入ngrok依赖

async function getUrl() { 
  let url = await ngrok.connect(3000);
  return url;
} 

// 自执行async函数
(async () => {
  let url = await getUrl();
  // 所有需要使用url的后续逻辑都写在此函数内
  console.log('生成的ngrok地址:', url);
})();

方案2:启用ES Module支持

如果是Node.js环境,在项目根目录的package.json中添加"type": "module"配置,即可直接使用顶层await语法,原有代码不需要额外包裹。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:18:04