我目前有以下
tsconfig.json
:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "Bundler",
"target": "ESNext",
"paths": {
"@common": [
"./common",
"../common",
],
"@common/*": [
"./common/*",
"../common/*",
],
},
}
}
当我尝试从
./common
(使用 @common
别名)导入某些内容时,它工作得很好,但如果我尝试从 ../common
(使用 @common
别名)导入某些内容,我会收到一条错误消息:@common
没有导出成员[姓名]。
如果我反转数组的顺序,则相反,我可以从
../common
导入导出,但不能从 ./common
导入导出。
重现:https://stackblitz.com/edit/vitejs-vite-nnc4wb?file=src%2Findex.ts%2Ctsconfig.json
似乎
tsconfig.json
只使用数组的第一项,这是有意的还是我做错了什么?如果仅使用数组的第一项是预期行为,那么让它成为数组有什么意义?
我面临着同样的问题,但在不同的环境中(nestjs)。 我已经检查了打字稿编译器文档here。如果你看一下fallback段落,它会说:
可以为路径映射提供多个文件路径。如果一条路径解析失败,将尝试数组中的下一条路径,直到解析成功或到达数组末尾。
在
"@common"
数组上的第一个条目之后,它会移至下一个条目。
我的项目中遇到的问题与扩展配置中的 baseUrl
选项有关。使用完整路径字符串作为后备我解决了问题:
# tsconfig.app.json
{
"extends": "../../tsconfig.json",
...
"paths": {
"@/*": [
"src/*",
"apps/crud/src/*"
],
}
}
我的项目文件夹结构是:
apps
├──crud
├──├──src
├──├──├──foo.ts
├──cli
├──├──src
├──├──├──bar.ts
├──├──tsconfig.app.json
tsconfig.json
希望对您有帮助。