打字稿中的 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 中的另一个组件的打字稿中激活和停用组件中的样式?