import 1.01从迁移1.0.3到1.1或更高版本

时间:2014-10-24 07:48:55

标签: requirejs typescript amd

在AMD模式下使用typescript,import语句从版本1.0.3到1.1。

目录结构:

  • BatteryIncluded / TextWriter.ts
  • BatteryIncluded / Registry.ts

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上搜索了可能意味着此错误但未找到任何错误的版本更改。

1 个答案:

答案 0 :(得分:0)

我刚刚下载了TypeScript 1.1来测试它并且它为我工作 - 唯一的区别是我的入口点是app.ts在根中,它加载BatteryIncluded/Registry然后加载BatteryIncluded/TextWriter这一切都很好。

我想如果你将编译器指向BatteryIncluded/Registry,它可能会认为这是根,这会使路径无效。我测试了这个理论,它也适合我。

唯一剩下的区别是我从命令行编译。

Here are the files I used - 也许你可以给他们一个去看看你是否遇到任何问题(这个例子中的嵌套文件夹名称是Nested)。