You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript项目配置baseUrl与ESLint后,无法限制导入路径且出现模块查找错误

TypeScript项目配置baseUrl与ESLint后,无法限制导入路径且出现模块查找错误

看起来你遇到了两个关联的问题——TypeScript无法解析基于baseUrl的导入路径,同时ESLint的导入限制规则也没生效。我来一步步帮你解决这两个问题:

一、解决TS2307模块查找错误

你的tsconfig配置本身是正确的(baseUrl设为src、include包含src),但ESLint和TypeScript的路径解析需要同步,而且你需要确保ESLint能识别TypeScript的路径别名。你已经安装了eslint-plugin-import,现在需要补充一个依赖让ESLint读取tsconfig的路径配置:

  1. 先安装依赖:
yarn add -D eslint-import-resolver-typescript
  1. 在你的eslintrc.cjs的settings中添加导入解析器配置:
settings: {
  "react": {
    "version": "detect"
  },
  "import/resolver": {
    "typescript": {
      "project": "./tsconfig.json" // 指定你的tsconfig文件路径
    }
  }
},

配置完成后,ESLint就能和TypeScript一样解析基于baseUrl的导入了。另外可以尝试重启编辑器,避免缓存导致的识别问题。

二、让ESLint的导入限制规则生效

你当前使用的no-restricted-imports规则禁止../*模式,但可能因为路径别名的存在,相对路径被转换为绝对别名路径,导致规则未触发。更适合的方案是使用专门的规则来禁止上级目录的相对导入:

  1. 在eslintrc.cjs的rules中添加:
"import/no-relative-parent-imports": "error",

这个规则会直接禁止所有向上级目录的相对导入,比no-restricted-imports更精准简洁。

如果坚持使用no-restricted-imports,可以扩展匹配模式覆盖多级上级路径:

"no-restricted-imports": ["error", {
  "patterns": ["../*", "../../*", "../../../*"]
}],

三、额外检查点

  • 确认tsconfig.json没有被ESLint忽略,你的ignorePatterns中未包含该文件,这部分配置是正确的;
  • 你已安装vite-tsconfig-paths,能保证Vite构建时正确解析路径,无需额外调整;
  • 运行ESLint时,确保目标路径是src目录,比如执行eslint src/**/*.{ts,tsx},避免路径范围错误导致规则未执行。

调整完配置后,重启ESLint服务或编辑器,应该就能同时解决模块查找错误和导入限制失效的问题了。

备注:内容来源于stack exchange,提问作者Web Obsseser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:57:59