作为Typescript 3 monorepo的一部分,我试图引用同一仓库中另一个包(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”。 指定了“路径”选项,寻找与模块匹配的模式 名称“ @ 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。