我遇到了the same issue.
我有下一个 tsconfig:
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"newLine": "LF",
"outDir": "./output/",
"target": "es2015",
"sourceMap": false,
"declaration": false,
"lib": [
"es2017",
"dom"
],
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"baseUrl": ".",
"paths": {
"@src/*": ["src/*"],
"@scripts/*": ["src/scripts/*"],
"@helpers/*": ["src/helpers/*"],
"@types/*": ["src/types/*"],
"@entity/*": ["src/types/entity/*"],
"@enum/*": ["src/types/enum/*"],
"@request/*": ["src/types/request/*"],
}
},
我想让您注意块路径。
我使用 "@enum/MyClass" 导入 MyClass。 我有绝对正确的建筑代码。但是编译后,我有导入路径 "@enum/MyClass" 的 js 代码,而不是 "src/types/entity/MyClass"。
如何获取路径正确的js代码?当然,我可以取消所有可变路径,但这是不好的方式。
答案 0 :(得分:1)
您在上面描述了预期的“路径”行为。此参数不解析 JS 工件中模块映射的编译过程。
来自官方 TypeScript 存储库的类似问题: https://github.com/microsoft/TypeScript/issues/10866
<块引用>好吧,为了添加上下文,“路径”是为与加载器一起使用而设计的 允许重新映射,与 Node.js require() 不同。预期行为 是允许 TypeScript 解析各种模块的类型信息 各种加载器使用的 ID,不是重写模块 ID。基本上它 没有做你认为它做的事情。在我看来也不应该,它 应该只具有镜像解析策略的能力 装载机。
因此,我建议您为加载器使用其他流行的插件,例如 https://www.npmjs.com/package/tsconfig-paths 用于打字稿编译器 或 https://www.npmjs.com/package/tsconfig-paths-webpack-plugin 用于您的 webpack。