Visual Studio 中的 Typescript AMD 模块

标签 typescript

我开始使用 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/

相关文章:

TypeScript 编号必须小于 1 且大于 0

http - Servicestack 请求 header 不包含 cookie

javascript - 如何在 TypeScript 中使用对象声明模块作为默认导出

javascript - Angular - innerHTML,转义小于/大于字符,但保持 <br/> 不变

javascript - 使用 TypeScript 创建新的 sql.js 数据库

javascript - 如何根据范围过滤数组,然后在结果的两侧获取额外的样本

typescript - 错误 : Cannot find module '@vue/cli-plugin-babel/preset'

reactjs - 如何在 react 中定义上下文数组中的类型

javascript - 从 JavaScript/TypeScript 类中的另一个方法获取引用

typescript - 与 Typescript 中的 "Pick"相反