mismatched anonymous define() module typescript with AMD and export module

匿名 (未验证) 提交于 2019-12-03 01:46:01

问题:

I am trying to create an application using Typescript(1.7.5) and AMD module. I have added reference to r.js and requirejs.js. below is my TS code:

export module TestNs {     export class TestClass {         public fn(): void{             debugger;         }     } } 

here is my aspx page to call "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> 

but I am getting below errors:

TestNS is undefined

"JavaScript runtime error: Mismatched anonymous define() module: function (require, exports)"

however when I remove "export" keyword, above code works fine. I am new to Typescript and requirejs. Can anyone point out what I am doing wrong and how to fix this?

thanks in advance.

回答1:

I think you should remove the following line:

export module TestNs 

Every file in type script is a module, so you do not need that part.

EDIT

Then in your javascript remove script tag to load your class and use something like this:

var moduleName = 'Scripts/TypeScriptBegin'; require([moduleName], function(TestNs){             var testObj = new TestNs.TestClass();             testObj.fn(); }) 

Hope this will help.



回答2:

Thanks to Amid, I found an answer(incase any body needs in future):

TypeScriptBegin.ts

export module TestNs {     export class TestClass {         public fn(): void {             //var v = new TSTest.TSTest.TestClass();             debugger;             //v.fn();         }     } } 

call from 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> 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!