Typescript AMD Module în Visual Studio

voturi
4

Sunt incepand cu typescript folosind Visual Studio 2012 Ultimate. Am schimbat MSBuild meu, inclusiv tag-ul AMD --module în comanda compilator. Compilatorul început să genereze module AMD.

Am include în RequireJS meu proiect din pachetele Nuget și includ în mea principală HTML această linie:

<script type=text/javascript data-main=scripts/SiteMaster  src=scripts/require.min.js></script>

Am două module SiteMaster și autorizăm. Sitemaster modul este simplu:

export module SiteMaster {
    import auth = module(Authenticate);
    auth.Authenticate.run();
}

Acesta importă doar modulul autentifice și solicită termen funcția (). Js pentru SiteMaster este ca acest lucru:

define([require, exports], function(require, exports) {
(function (SiteMaster) {
    var auth = __auth__;

    auth.Authenticate.run();
})(exports.SiteMaster || (exports.SiteMaster = {}));

})

Problema este că, atunci când am naviga soluția am primit eroarea:

Microsoft JScript runtime error: '__auth__' is undefined

Cum pot rezolva aceasta problema ???

Mulțumesc anticipat.

Întrebat 06/10/2012 la 19:12
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
5

Vă mulțumim pentru aducerea asta mvbaffa!

Pe eșantion Valentin dacă schimbați SiteMaster.ts la:

import auth = module("Authenticate");
export module SiteMaster {
    auth.Authenticate.run();
}

prin mutarea declarația de import din declarația modulului va genera codul js corect. O să deschid un bug pe site-ul CodePlex typescript și asigurați-vă că acest lucru este bine fixat. Puteți face workaround pe compilator curent [v0.8] în cazul în care acest lucru este o problemă de blocare pentru tine.

Publicat 06/10/2012 la 22:51
sursa de către utilizator

voturi
4

Sunt destul de convins că aceasta este o eroare în compilator. Am reprodus problema utilizând următoarele fișiere sursă:

Authenticate.ts

export var Authenticate = { 
    run : function() {
        console.log("Run!");
    }
}

SiteMaster.ts

export module SiteMaster {
    import auth = module("Authenticate");
    auth.Authenticate.run();
}

test.html

<html>
    <head>
        <script type="text/javascript" data-main="SiteMaster"  src="http://requirejs.org/docs/release/2.1.0/minified/require.js"></script>
    </head>
    <body>
        <p>Test</p>
    </body>
</html>

Am compila folosind texte dactilografiate

tsc --module amd SiteMaster.ts Authenticate.ts

Atunci când deschid test.htmlîn Firefox cu Firebug, am lua următoarea eroare:

ReferenceError: __auth__ is not defined
var auth = __auth__;

Codul compilat pentru SiteMaster.jsarată după cum urmează:

define(["require", "exports"], function(require, exports) {
    (function (SiteMaster) {
        var auth = __auth__;

        auth.Authenticate.run();
    })(exports.SiteMaster || (exports.SiteMaster = {}));

})

Judecând din typescript lui secțiune caietul de sarcini limbaj 9.4.3 AMD Module I - ar aștepta ceva de-a lungul liniilor de:

define(["require", "exports", "authenticate"], function(require, exports, authenticateModule) {
    (function (SiteMaster) {
        var auth = authenticateModule;

        auth.Authenticate.run();
    })(exports.SiteMaster || (exports.SiteMaster = {}));

})

Acest lucru este în conformitate cu exemplele din caietul de sarcini limba. Dacă alții sunt de acord, am putea depune un bug cu echipa dactilografiate.

Publicat 06/10/2012 la 21:10
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more