Create React App+Lerna monorepo中ESLint报import/no-unresolved错误
解决Lerna Monorepo中JS导入TS时ESLint的
import/no-unresolved错误 1. 安装必要的ESLint解析器依赖
你当前配置用到了eslint-import-resolver-typescript但可能未安装,执行以下命令补装:
npm install eslint-import-resolver-typescript --save-dev # 或使用yarn yarn add eslint-import-resolver-typescript -D
2. 修正ESLint路径解析配置
当前settings里的import/resolver.typescript仅设为true,无法适配Lerna多包结构。需指定TS配置文件路径,让ESLint正确识别各包的类型定义:
修改.eslintrc.json的settings部分:
"settings": { "import/resolver": { "typescript": { "project": ["packages/*/tsconfig.json", "./tsconfig.json"] }, "node": { "extensions": [".js", ".jsx", ".ts", ".tsx"] } }, "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx", ".js", ".jsx"] } }
project指定所有包的TS配置文件路径,确保ESLint读取完整类型配置node.extensions添加TS相关扩展名,避免因扩展名缺失导致解析失败import/parsers将JS/JSX纳入TS解析器处理范围,让ESLint识别JS文件对TS模块的导入
3. 确保tsconfig.json配置正确
检查根目录或各包的tsconfig.json,确认以下关键配置:
{ "compilerOptions": { "allowJs": true, "checkJs": true, // 可选,开启后对JS文件做类型检查 "baseUrl": "./src" // 若用路径别名,需同步到ESLint配置 }, "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js", "src/**/*.jsx"] }
allowJs必须设为true,允许TS编译器处理JS文件include需覆盖所有JS/JSX文件,确保类型定义被正确识别
4. 清除ESLint缓存
ESLint缓存可能残留旧配置,执行命令清除:
npx eslint --cache --clear # 或直接删除项目根目录的.eslintcache文件
5. 验证Lerna包配置
检查lerna.json的packages字段是否正确包含所有子包路径:
{ "packages": ["packages/*"], "version": "independent" }
完成以上步骤后,重启ESLint服务或重新运行lint命令,import/no-unresolved错误即可解决。
内容的提问来源于stack exchange,提问作者Yogendra
相关产品推荐
相关产品推荐

