我尝试将TypeScript与RequireJS一起使用,但我收到以下错误:
匿名的define()模块不匹配。
我理解这是因为Typescript没有发出模块名称,我自己将脚本加载到页面中(我这样做是因为它们被定义为MVC项目中的预定义包) )。
目前输出的.js看起来像这样:
define(["require", "exports", "jquery"], function(require, exports, $) {...
当我需要它发出时:
define("MODULE_NAME" ["require", "exports", "jquery"], function(require, exports, $) {...
这可以使用Typescript,还是应该用Require.js自己的优化来替换最小化的bundle?
答案 0 :(得分:1)
问题不在于代码生成(这是正确的)。问题是您可能有一个加载此JavaScript文件的脚本标记。它只能由RequireJS加载,使用data-main或作为另一个模块的依赖项。
请参阅:http://requirejs.org/docs/errors.html#mismatch
删除脚本标记
答案 1 :(得分:1)
如果您使用的是ASP.NET和集成的script bundling,那么您是对的:问题是该捆绑包含多个匿名模块。虽然通常的做法是使用匿名模块(并让一些压缩器/优化器稍后进行命名),但这不适用于ASP.NET捆绑,因为它只连接输入的JS文件。解决方案是使TypeScript创建命名模块。这可以用TS,所以你的问题的答案
肯定是:是的!这是否可以使用Typescript
TypeScript 1.4增加了向编译器发出AMD named modules的能力,如下所示:
2