当两个不同的文件引用时,打字稿找不到外部模块
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
其中:
- class_a 引用 shared.ts
- class_b 引用 class_a.ts 和 class_c.ts
- class_c 引用 shared.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
我可能遗漏了一些明显的东西,但是 Typescript 的 commonjs 模块解析器没有按预期工作。
给定以下目录结构和文件:
./first/shared.ts
./first/second/class_a.ts
./first/second/class_b.ts
./third/class_c.ts
其中:
- class_a 引用 shared.ts
- class_b 引用 class_a.ts 和 class_c.ts
- class_c 引用 shared.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