如何让ESLint检测出ReferenceError?
如何让ESLint检测出ReferenceError?
我最近碰到个头疼的事儿——用Node环境的ESLint检查代码,结果它居然没检测到明显的ReferenceError。比如我写了个极简的测试文件mre.js,代码是这样的:
console.log(obj); let obj = 2;
然后我跑ESLint命令:
$ ./node_modules/.bin/eslint mre.js
结果啥警告都没出来!我都已经把ESLint更到最新的9.2.6版本了,确认过版本没问题:
$ npm update eslint $ npm info eslint version
这到底咋回事啊?怎么才能让ESLint把这种变量先使用后声明的ReferenceError揪出来?
别担心,这其实是因为默认的ESLint规则集里,没有自动开启检测这类变量提升相关错误的规则。你只需要做这几步就能解决:
首先找到你的ESLint配置文件——如果是旧版格式就是
.eslintrc.js/.eslintrc.json,新版Flat Config就是eslint.config.js,在里面开启no-use-before-define规则:- 要是用的是旧版配置文件,这么加规则:
{ "rules": { "no-use-before-define": "error" } } - 要是用的是新版Flat Config,就这么写:
export default [ { rules: { "no-use-before-define": "error" } } ];
- 要是用的是旧版配置文件,这么加规则:
保存配置之后,再重新跑一遍ESLint命令,你就能看到它精准报错,提示你
obj is used before being defined了!
另外提个小细节:ESLint 9.x之后,默认启用的规则做了调整,这条检测前置使用的规则不再是默认开启的,所以得手动配置才行。
内容来源于stack exchange
相关产品推荐
相关产品推荐

