如何用ESLint检测未加await的async函数调用并告警?
如何用ESLint检测未使用await调用async函数的情况?
你需要的是检测未处理的Promise调用(包括async函数返回的Promise),ESLint有现成的规则可以实现这个需求:
方案1:使用ESLint核心规则 no-unused-promise
从ESLint v8.0.0开始,核心规则中包含no-unused-promise,专门用于检测未被使用或处理的Promise。
在你的ESLint配置文件(如.eslintrc.json、.eslintrc.js)中添加规则配置:
{ "rules": { "no-unused-promise": "warn" } }
方案2:使用 eslint-plugin-promise 插件的 no-floating-promises 规则
如果你的ESLint版本较低,或者更习惯使用这个社区插件,可以按以下步骤配置:
- 先安装插件:
npm install eslint-plugin-promise --save-dev
- 在ESLint配置文件中启用插件并设置规则:
{ "plugins": ["promise"], "rules": { "promise/no-floating-promises": "warn" } }
规则效果
以上两种规则都会在你调用async函数但未使用await、未通过.then()/.catch()处理,也未将Promise赋值给变量后续处理时触发警告。比如你示例中的foo()调用,就会被检测到并提示警告,完美覆盖你之前遗漏await导致的问题场景。
特殊情况忽略
如果有个别场景你确实不需要处理Promise,可以通过单行注释临时禁用规则:
// eslint-disable-next-line promise/no-floating-promises foo();
内容的提问来源于stack exchange,提问作者Sebastiaan Joosten
相关产品推荐
相关产品推荐

