我开始使用 Visual Studio 2012 Ultimate 的 TypeScript。我更改了我的 MSBuild,包括编译器命令中的 --module amd 标记。编译器开始生成 AMD 模块。
我在我的项目中包含了 Nuget Packages 中的 RequireJS,并在我的主要 HTML 中包含了这一行:
<script type="text/javascript" data-main="scripts/SiteMaster" src="scripts/require.min.js"></script>
我有两个模块 SiteMaster 和 Authenticate。 SiteMaster 模块很简单:
export module SiteMaster {
import auth = module("Authenticate");
auth.Authenticate.run();
}
它只是导入 Authenticate 模块并调用函数 run()。 SiteMaster 的 js 是这样的:
define(["require", "exports"], function(require, exports) {
(function (SiteMaster) {
var auth = __auth__;
auth.Authenticate.run();
})(exports.SiteMaster || (exports.SiteMaster = {}));
})
问题是当我浏览解决方案时收到错误:
Microsoft JScript runtime error: '__auth__' is undefined
我该如何解决这个问题???
提前致谢。
最佳答案
感谢您提出这个问题 mvbaffa!
在 Valentin 的示例中,如果您将 SiteMaster.ts 更改为:
import auth = module("Authenticate");
export module SiteMaster {
auth.Authenticate.run();
}
通过将 import 语句移出模块声明,它将生成正确的 js 代码。我在 TypeScript codeplex 站点上打开了一个错误,并确保它得到修复。如果这对您来说是一个阻塞问题,您可以在当前编译器 [v0.8] 上执行解决方法。
关于Visual Studio 中的 Typescript AMD 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762462/