打字稿中的 baseUrl 和路径 - 如何

Posted

技术标签:

【中文标题】打字稿中的 baseUrl 和路径 - 如何【英文标题】:baseUrl and paths in typescript - how 【发布时间】:2018-12-19 16:00:07 【问题描述】:

我已经在 typescript 中启动了一个应用程序。我已经了解了 TS 的一些功能,它看起来像是可以帮助我的东西,但是,我没有像我期望的那样工作。 TS 的文档在 Module resolution 一章中介绍了有关 Path mapping 的内容。如果我理解正确,这个模块映射可以在import 中为我节省很少甚至很多双点。所以我创建了一个包含一个文件的“inc”目录(此时),它将包含在多个目录中的多个文件中。在 tsconfig 中我写了以下内容:

"baseUrl": ".",
"paths": 
    "@inc/*": [ "inc/*" ]

现在,我预计,使用 import X from "@inc/somefile"(即使来自文件夹树深处某处的文件)会导致从 ./inc/somefile.ts(或 .js,在运行时)导入 export X

但是,编译器/转译器将保持 import 语句完好无损,因此当我尝试使用 node.js 运行此代码时,它会死掉,因为没有 @inc/somefile - 节点不读取 tsconfig 和 tsc不创建任何映射函数。

当然,我可以在某种 require 包装器中手动读取和解析 path 元素,但我相信我做错了什么和/或更好的方法来实现这一点。

感谢您的回复。

【问题讨论】:

这个问题你解决了吗? 没有。 vanilla TS 目前无法解决(嗯,这是一个真实的词吗?),更多关于 github:github.com/Microsoft/TypeScript/issues/10866 【参考方案1】:

记住

如果您尝试使用 node(或 ts-node)执行编译后的文件,它只会在 node_modules 文件夹中一直查找到文件系统的根目录,因此不会找到路径指定的模块tsconfig。 -- 在 tsconfig-paths 自述文件中引入。

总之,直接将 tsconfig-paths 引入依赖列表并在运行时加载 tsconfig 文件可能是一个快速的解决方案。

【讨论】:

天啊!这是唯一的正确答案,我找了好几个小时!这个小东西差点把我逼疯了! xD 非常感谢!

以上是关于打字稿中的 baseUrl 和路径 - 如何的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Angular 6 中的另一个组件的打字稿中激活和停用组件中的样式?

如何在打字稿中的猫鼬userschema.methods中使用“this”

打字稿中的模块关键字是啥意思?

如何覆盖打字稿中的属性?

如何理解打字稿中的“属性'名称'在'用户'类型中是私有的”

如何访问打字稿中的字段验证错误?