作为Typescript 3 monorepo的一部分,我试图在同一个repo中引用另一个(project_1)的包(project_2)。回购看起来像:
|- project_1
| |- package.json (@projects/project_1)
| |- tsconfig.json
| |- src
| |- foo.ts
|- project_2
|- package.json (@projects/project_2)
|- tsconfig.json
|- src
|- bar.ts
foo.ts使用以下行引用bar.ts:
import { bar } from "@projects/project_2/src/bar";
我跑的时候
cd project_1 && yarn exec tsc -- --traceResolution
从Typescript 2.9开始,我收到以下消息:
========从'/home/jesuspc/Code/test2/project_1/src/foo.ts'解析模块'@projects / project_2 / src / bar'。 ========使用'NodeJs'未指定模块分辨率类型。 'baseUrl'选项设置为'/ home / jesuspc / Code / test2 /',使用此值来解析非相对模块名称'@projects / project_2 / src / bar'。指定'paths'选项,寻找与模块名称'@projects / project_2 / src / bar'匹配的模式。模块名称为“@projects / project_2 / src / bar”,匹配模式为“@ projects /”。尝试替换'./',候选模块位置:'。/ project_2 / src / bar'。加载模块作为文件/文件夹,候选模块位置'/ home / jesuspc / Code / test2 / project_2 / src / bar',目标文件类型'TypeScript'。文件'/home/jesuspc/Code/test2/project_2/src/bar.ts'存在 - 将其用作名称解析结果。 ========模块名称'@projects / project_2 / src / bar'已成功解析为'/home/jesuspc/Code/test2/project_2/src/bar.ts'。 ======== src / foo.ts:1:24 - 错误TS2307:找不到模块'@projects / project_2 / src / bar'。
1从“@ projects / project_2 / src / bar”导入{bar,x};
显然模块已正确解决:
“模块名称'@projects / project_2 / src / bar'已成功解析为'/home/jesuspc/Code/test2/project_2/src/bar.ts'”
但后来失败了:
@ projects / project_2 / src / bar未找到
这对我没有意义。
我注意到模块在Typescript 2.8中得到了正确解析,编译成功了。我在补丁说明中找不到2.8和2.9之间的任何相关变化。
为什么报告模块位置首先被正确解析然后抱怨它找不到?
我已经推动代码将问题重现到this repo。
我做了什么:
project_1
,改变了你对"@projects/project_2": "../project_2"
的依赖之路project_1
,安装@types/node
现在,当我运行yarn exec tsc
时,它按预期工作。
✨ Done in 3.48s.