使用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
相关产品推荐
相关产品推荐

