当两个不同的文件引用时,打字稿找不到外部模块

Typescript can't find external module when referenced by two different files

我可能遗漏了一些明显的东西,但是 Typescript 的 commonjs 模块解析器没有按预期工作。

给定以下目录结构和文件:

./first/shared.ts
./first/second/class_a.ts
./first/second/class_b.ts
./third/class_c.ts

其中:

具体来说:

shared.ts:
class Shared{}
export = Shared;

class_a.ts:
import Shared = require('../shared');
class A{}
export = A;

class_b.ts:
import A = require('./class_a');
import C = require('../../third/class_c');
class B {}
export = B;

class_c.ts:
import Shared = require('../first/shared');
class C {}
export = C;

除 class_b.ts 之外的所有编译,使用以下编译器调用:

tsc --module commonjs class_a.ts

编译 class_b.ts 失败,错误是找不到 shared.ts:

../../third/class_c.ts(1,25): error TS2307: Cannot find external module '../first/shared'.

请注意,如果您颠倒 class_b.ts 中的导入顺序,则会出现不同的错误:

class_a.ts(1,25): error TS2307: Cannot find external module '../shared'.

编译器似乎在第一次导入时找到了 shared.ts,但在第二次导入时找不到。

我正在使用 tsc 1.4.1.0。

这里有什么明显的我遗漏的吗?

我可以验证这是确实一个错误:

C:\Users\basaratsyed\Downloads\ts\fancyimport\first\second>node "C:\Program Files (x86)\Microsoft SDKs\TypeScript.4\tsc.js" --module commonjs class_b.ts
../../third/class_c.ts(1,25): error TS2307: Cannot find external module '../first/shared'.

也就是说它不会出现在 语言服务中 API 例如atom-typescript 这可能是它尚未被报道的原因:

注意:我已经在这里报告了:https://github.com/Microsoft/TypeScript/issues/2193