React项目绝对导入冲突:自定义constants被识别为node_modules模块
解决React项目中绝对导入冲突问题
在React项目中使用import { MY_CONSTANT } from 'constants';时,TypeScript和ESLint会将constants识别为node_modules/@types/node/constants.d.ts模块,而非src/目录下自定义的constants文件,可通过以下修改.eslintrc配置解决:
核心修改点
- 调整解析器优先级:让
typescript解析器优先于node解析器,确保TS路径配置被优先读取 - 修正模块查找顺序:将项目
src目录移到node_modules之前,让自定义模块优先被查找
修改后的.eslintrc配置
重点调整settings.import/resolver部分:
{ // 其他原有配置保持不变 "settings": { "import/resolver": { // 优先使用typescript解析器,读取tsconfig的paths配置 "typescript": { "project": [ "server/tsconfig.json", "client/tsconfig.json" ] }, "node": { // 把src目录移到node_modules前面,优先查找自定义模块 "moduleDirectory": [ "client/src", "server/src", "client/node_modules", "server/node_modules" ], "extensions": [".ts", ".tsx"] } } } }
配套tsconfig配置(需确认)
确保client/tsconfig.json中已配置正确的路径映射:
{ "compilerOptions": { "baseUrl": "./src", // 以src为基准目录 "paths": { "constants": ["./constants"] // 映射自定义constants模块 } } }
内容的提问来源于stack exchange,提问作者jlarks32
相关产品推荐
相关产品推荐

