编译打字稿后的问题路径

时间:2021-05-17 01:09:00

标签: node.js angular typescript typescript2.0

我遇到了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代码?当然,我可以取消所有可变路径,但这是不好的方式。

1 个答案:

答案 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。