Eslint + typescript 路径别名 - 无法解析模块的路径

Posted

技术标签:

【中文标题】Eslint + typescript 路径别名 - 无法解析模块的路径【英文标题】:Eslint + typescript paths aliasing - Unable to resolve path to module 【发布时间】:2022-01-15 05:50:14 【问题描述】:

我为路径添加打字稿配置:


 //.....

 "moduleResolution": "node",

  "baseUrl": "app",
  "paths": 
  "@app/*": ["*"],
  "@folder/*": ["folder/*"],

  //Other paths
,

为 webpack 添加配置:

  resolve: 
  extensions: [".tsx", ".ts", ".js", ".jsx", ".css", ".json"],
  alias: 
    "@app":path.resolve(__dirname + "../", "app"),
    "@services":path.resolve(__dirname + "../app", "folder")
  ,
  modules: [
    "node_modules", path.resolve(process.cwd(), "app")
  ],
  plugins: [
    new TsConfigPathsPlugin(
      configFile: "../tsconfig.json"
    ),
  ],
,

这是我的 .eslint 文件:

"settings": 
"import/resolver": 
  "node": 
    "paths": [
      "app"
    ],
    "extensions": [
      ".ts",
      ".tsx",
      ".jest.tsx",
      ".d.ts"
    ]
  

之后我尝试像这样导入一些东西:

import component from "@folder/component";

一切都组装好了,编译器不会产生错误 但我在 eslint 中遇到错误:

ESLint:无法解析模块“@folder/component”的路径。(import/no-unresolved)

第三天我一直在努力解决这个问题 客户不想安装额外的插件 非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

node 解析器不理解 TypeScript paths。所以它专门寻找一个名为@folder/component 的节点模块——它不存在。

您可以为插件使用 typescript 解析器: https://www.npmjs.com/package/eslint-import-resolver-typescript

【讨论】:

谢谢,它对我有用:)

以上是关于Eslint + typescript 路径别名 - 无法解析模块的路径的主要内容,如果未能解决你的问题,请参考以下文章

vue3+typescript实战记录二(typescript-eslint)

ESLint 无法识别根别名 (@)

如何修复 eslint 抱怨打字稿的路径别名

typescript项目配置路径别名(路径映射)

Typescript 路径别名在运行时未正确解析

TypeScript导入路径别名