Typescript模块已成功解决但无法找到

问题描述 投票:1回答:1

作为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

typescript
1个回答
1
投票

我做了什么:

  • project_1,改变了你对"@projects/project_2": "../project_2"的依赖之路
  • 仍然在project_1,安装@types/node

现在,当我运行yarn exec tsc时,它按预期工作。

✨  Done in 3.48s.
© www.soinside.com 2019 - 2024. All rights reserved.