TypeScript中的baseUrl和paths是什么?

6

我开始使用TypeScript编写应用程序。我学习了一些TS的特性,看起来可以帮助我,但实际上并没有像我期望的那样工作。TS的文档在模块解析章节中提到了路径映射。如果我理解正确的话,这个模块映射可以在import语句中省略一些冗长的双点。因此,我创建了一个名为“inc”的目录,并在其中放置了一个文件(目前只有一个),该文件将被包含在多个目录中的多个文件中。我在tsconfig中编写了以下内容:

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

现在,我期望使用import { X } from "@inc/somefile"(甚至是从文件树的深处休息的文件)会导致从./inc/somefile.ts(或.js,当运行时)导入该export X

然而,编译器/转换器将保留import语句,因此当我尝试使用node.js运行此代码时,它会死亡,因为没有@inc/somefile- node不读取tsconfig,tsc也不创建任何映射函数。

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

感谢您的回复。


你解决了这个问题吗? - uladzimir
不,目前无法通过普通的TS解决(天哪,这是真词吗?),更多详情请查看github:https://github.com/Microsoft/TypeScript/issues/10866 - Mike S.
1个回答

3

请记住

如果您尝试使用node(或ts-node)执行编译后的文件,则它只会查找到文件系统根目录的所有node_modules文件夹,并且因此无法找到在tsconfig中指定路径的模块。-- 出现在tsconfig-paths自述文件中。

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


1
哇!这是唯一的正确答案,我已经搜索了好几个小时了!这个小东西几乎把我逼疯了!xD 非常感谢你! - wamaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接