如何检测Web JavaScript项目中遗漏的await语句?
检测JavaScript项目中遗漏await语句的方法
静态检测(最推荐,编码阶段拦截)
直接通过ESLint规则实现全项目扫描:
- 纯JS项目可以安装
eslint-plugin-promise插件,开启no-floating-promises规则 - TS项目可以直接开启
@typescript-eslint/no-floating-promises规则
开启后所有调用异步函数后未加await、也未做后续处理的「浮动Promise」都会被直接标记为问题,你给出的示例中漏写await的const object = createObject()代码会直接在编辑器中高亮提示,提前拦截错误。
Chrome开发者工具运行时检测
你提到的谷歌网页开发者工具可以用于线上或运行时场景的问题排查:
- 确认DevTools设置页的「Enable async stack traces」选项处于开启状态(默认开启),当遗漏await的Promise抛出未处理异常时,控制台会输出带完整异步调用栈的报错,可直接定位到漏写await的代码行。
- 可以手动注入全局事件监听批量捕获未处理的Promise:
window.addEventListener('unhandledrejection', (event) => { console.error('检测到未处理的Promise,大概率存在遗漏await:', event.reason); console.trace('调用栈信息:'); });
只要异步函数执行抛出错误且没有被await捕获,就会触发该事件回调,输出对应的调用位置。
注意:如果是故意不写await的场景(比如并行发起多个异步请求,后续统一用Promise.all处理),只要你后续对返回的Promise做了消费处理,上述检测规则不会误报。
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

