【问题标题】:Typescript2 path module resolutionTypescript2 路径模块解析
【发布时间】:2017-07-01 01:19:39
【问题描述】:

tl;dr : 模块解析不适用?

你好,

我正在玩 Typescript2 模块解析功能。

我注意到现在可以指定“路径”,以便您可以执行以下操作:

老办法

import {a} from "../../../foo"

新方式

import {a} from "services/foo"

为此,您需要在 tsconfig.json 中添加一些配置

    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "services/*": ["./application/core/services/*"],
        }
    }

我遇到的问题是,在编译时,导入实际上并没有改变。我的 javascript 输出仍然包含来自“services/foo”的导入,因此在我的节点服务器上运行时显然会崩溃。

我使用 gulp-typescript 编译我的 javascript 文件:

var tsProject = ts.createProject("tsconfig.json");
return tsProject.src()
    .pipe(sourcemaps.init())
    .pipe(tsProject()).js
    .pipe(sourcemaps.write("../api"))
    .pipe(gulp.dest(function(file) {
        return file.base;
}));

我在这里完全迷失了,很想使用那个模块解析,这样我就可以摆脱那个 ../../ 地狱般的导入。任何帮助将不胜感激!

【问题讨论】:

    标签: node.js typescript gulp typescript2.0 gulp-typescript


    【解决方案1】:

    这里的问题是 JavaScript 引擎对您的 TypeScript 配置一无所知,您在 tsconfig 中指定的内容仅用于“编译时间”,当您将 TypeScript 编译为 JS 时,您需要执行与 TS 相同的工作编译器只是将解析后的路径保存在 JS 文件中。

    简单地说,所有的JS文件都需要处理,别名替换为“真实”路径。

    提示:使用 npm 工具 tspath (https://www.npmjs.com/package/tspath),它需要 0 配置,只需在项目的某个地方运行它,所有 JS 文件都会被处理并准备好运行!

    【讨论】:

    • TypeScript 3 及更高版本在 2020 年仍然存在问题吗?我也遇到了同样的问题。
    • @AHonarmand 是的,我在 atm 遇到同样的问题
    • 我不得不使用 Babel。我找不到仅使用 TypeScript 解决此问题的方法。
    • 这个家伙提到了一些关于 tsconfig-paths 的事情,它对我来说非常有效(更不用说每周 700 万次下载)github.com/microsoft/TypeScript/issues/…
    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2022-01-15
    • 2021-11-10
    • 1970-01-01
    • 2022-11-09
    • 2023-01-24
    • 2015-09-17
    相关资源
    最近更新 更多