在AMD模式下使用typescript,import语句从版本1.0.3到1.1。
目录结构:
Code Registry.ts:
import TextWriter = require("BatteryIncluded/TextWriter");
class Registry <ValueType> {
// etc...
}
export = Registry;
代码TextWriter.ts:
class TextWriter {
// etc..
}
export = TextWriter;
在打字稿版本1.0.3中,不会发生错误。但在版本1.1或更高版本中,错误是:
"C:/Program Files/nodejs/node.exe" C:\PROJECT_GIT\TypeScript\built\local\tsc.js --sourcemap -- target ES5 --module AMD Registry.ts
Registry.ts(2,29): error TS2307: Cannot find external module 'BatteryIncluded/TextWriter'.
以下列形式使用typescript:
node C:\PROJECT_GIT\TypeScript\built\local\tsc.js --sourcemap --target ES5 --module AMD $FileName$
要解决此问题,我可以使用import语句:
import TextWriter = require("./TextWriter");
这是不可取的,因为所有深度嵌套的文件我需要做这样的事情:
import TextWriter = require("../../../TextWriter");
之前可以使用:
import TextWriter = require("BatteryIncluded/TextWriter");
我在TypeScript GitHub repro上搜索了可能意味着此错误但未找到任何错误的版本更改。
答案 0 :(得分:0)
我刚刚下载了TypeScript 1.1来测试它并且它为我工作 - 唯一的区别是我的入口点是app.ts
在根中,它加载BatteryIncluded/Registry
然后加载BatteryIncluded/TextWriter
这一切都很好。
我想如果你将编译器指向BatteryIncluded/Registry
,它可能会认为这是根,这会使路径无效。我测试了这个理论,它也适合我。
唯一剩下的区别是我从命令行编译。
Here are the files I used - 也许你可以给他们一个去看看你是否遇到任何问题(这个例子中的嵌套文件夹名称是Nested
)。