ESLint结合TypeScript报错:node_modules中出现||=语法错误
排查ESLint误检测node_modules语法错误的实用步骤
先核对
.eslintignore的有效性:- 确保文件在项目根目录,文件名是
.eslintignore(开头的点不能丢) - 文件内必须写
node_modules/(末尾加斜杠,精准匹配文件夹,避免误匹配同名文件) - 检查有没有拼写错误,比如写成
node_module/少了个s
- 确保文件在项目根目录,文件名是
检查ESLint运行命令:
- 确认没有加
--no-ignore参数,这个参数会强制跳过所有忽略规则 - 别手动指定
node_modules/作为检测路径,比如eslint src/ node_modules/这种错误命令 - 直接运行
eslint .,让ESLint自动读取根目录的配置和忽略规则
- 确认没有加
解决Node.js版本兼容问题:
- Node 14.21.3本身不支持
||=逻辑赋值运算符(该特性在Node 15+才引入),ESLint解析器如果用了Node 14的环境配置,会把新语法判定为错误 - 在
.eslintrc.json里调整配置:{ "env": { "node": true, "es2021": true }, "parserOptions": { "ecmaVersion": "2021", "project": "./tsconfig.json" } } - 确保
parserOptions.project指向你的tsconfig.json,让ESLint用TypeScript的解析规则而非Node本身的语法限制
- Node 14.21.3本身不支持
显式设置ESLint忽略规则:
- 部分第三方ESLint配置或插件可能覆盖默认忽略规则,直接在
.eslintrc.json里显式声明:{ "ignorePatterns": ["node_modules/"] }
- 部分第三方ESLint配置或插件可能覆盖默认忽略规则,直接在
清除ESLint缓存:
- ESLint会缓存检测结果,旧缓存可能导致规则不生效,运行命令:
eslint . --no-cache
- ESLint会缓存检测结果,旧缓存可能导致规则不生效,运行命令:
验证tsconfig.json的排除规则:
- 确保tsconfig.json里的
exclude包含node_modules:{ "exclude": ["node_modules"] } - 同时确认
.eslintrc.json里的parserOptions.project没有指向其他路径的tsconfig,否则当前修改的tsconfig不会生效
- 确保tsconfig.json里的
检查ESLint版本兼容性:
- 运行
npm list eslint查看版本,ESLint 8.x及以上版本对TypeScript和Node 14的兼容性更好,如果版本过低,考虑升级(注意Node 14最高支持ESLint 8.22.0左右,不要升太新)
- 运行
内容的提问来源于stack exchange,提问作者ava096
相关产品推荐
相关产品推荐

