我可能会遗漏一些明显的东西,但是针对commonjs的Typescript模块解析器没有按预期工作。
给出以下目录结构和文件:
./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。
我想念的任何明显的东西,在这里?
答案 0 :(得分:3)
我可以验证这是确实一个错误:
C:\Users\basaratsyed\Downloads\ts\fancyimport\first\second>node "C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.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