与 AMD 和导出模块不匹配的匿名 define() 模块打字稿
mismatched anonymous define() module typescript with AMD and export module
我正在尝试使用 Typescript(1.7.5) 和 AMD 模块创建应用程序。我添加了对 r.js 和 requirejs.js 的引用。下面是我的 TS 代码:
export module TestNs {
export class TestClass {
public fn(): void{
debugger;
}
}
}
这是我要调用的 aspx 页面 "fn()":
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TypeScriptPage.aspx.cs" Inherits="WebApplication1.TypeScriptPage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="div1">
</div>
<script src="Scripts/r.js"></script>
<script src="Scripts/require.js"></script>
<script src="Scripts/TypeScriptBegin.js"></script>
<script type="text/javascript">
var testObj = new TestNs.TestClass();
testObj.fn();
</script>
</form>
</body>
</html>
但我遇到以下错误:
TestNS 未定义
"JavaScript runtime error: Mismatched anonymous define() module: function (require, exports)"
但是当我删除 "export" 关键字时,上面的代码工作正常。我是 Typescript 和 requirejs 的新手。谁能指出我做错了什么以及如何解决这个问题?
提前致谢。
我认为您应该删除以下行:
export module TestNs
类型脚本中的每个文件都是一个模块,因此您不需要那部分。
编辑
然后在您的 javascript 中删除脚本标签以加载您的 class 并使用如下内容:
var moduleName = 'Scripts/TypeScriptBegin';
require([moduleName], function(TestNs){
var testObj = new TestNs.TestClass();
testObj.fn();
})
希望这会有所帮助。
感谢 Amid,我找到了答案(以防将来有人需要):
TypeScriptBegin.ts
export module TestNs {
export class TestClass {
public fn(): void {
//var v = new TSTest.TSTest.TestClass();
debugger;
//v.fn();
}
}
}
从 aspx 调用:
<script src="Scripts/r.js"></script>
<script src="Scripts/require.js"></script>
<script type="text/javascript">
var moduleName = 'Scripts/TypeScriptBegin';
require([moduleName], function (TestMod) {
var testObj = new TestMod.TestNs.TestClass();
testObj.call();
});
</script>
我正在尝试使用 Typescript(1.7.5) 和 AMD 模块创建应用程序。我添加了对 r.js 和 requirejs.js 的引用。下面是我的 TS 代码:
export module TestNs {
export class TestClass {
public fn(): void{
debugger;
}
}
}
这是我要调用的 aspx 页面 "fn()":
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TypeScriptPage.aspx.cs" Inherits="WebApplication1.TypeScriptPage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="div1">
</div>
<script src="Scripts/r.js"></script>
<script src="Scripts/require.js"></script>
<script src="Scripts/TypeScriptBegin.js"></script>
<script type="text/javascript">
var testObj = new TestNs.TestClass();
testObj.fn();
</script>
</form>
</body>
</html>
但我遇到以下错误:
TestNS 未定义
"JavaScript runtime error: Mismatched anonymous define() module: function (require, exports)"
但是当我删除 "export" 关键字时,上面的代码工作正常。我是 Typescript 和 requirejs 的新手。谁能指出我做错了什么以及如何解决这个问题?
提前致谢。
我认为您应该删除以下行:
export module TestNs
类型脚本中的每个文件都是一个模块,因此您不需要那部分。
编辑
然后在您的 javascript 中删除脚本标签以加载您的 class 并使用如下内容:
var moduleName = 'Scripts/TypeScriptBegin';
require([moduleName], function(TestNs){
var testObj = new TestNs.TestClass();
testObj.fn();
})
希望这会有所帮助。
感谢 Amid,我找到了答案(以防将来有人需要):
TypeScriptBegin.ts
export module TestNs {
export class TestClass {
public fn(): void {
//var v = new TSTest.TSTest.TestClass();
debugger;
//v.fn();
}
}
}
从 aspx 调用:
<script src="Scripts/r.js"></script>
<script src="Scripts/require.js"></script>
<script type="text/javascript">
var moduleName = 'Scripts/TypeScriptBegin';
require([moduleName], function (TestMod) {
var testObj = new TestMod.TestNs.TestClass();
testObj.call();
});
</script>