Typescript AMD Modules in Visual Studio

stemmen
4

Ik begin met de schrijfmachine met behulp van Visual Studio 2012 Ultimate. Ik heb mijn MSBuild waaronder de --module amd tag in de compiler commando veranderd. De compiler begon AMD modules genereren.

Ik heb onder andere in mijn project RequireJS van Nuget Pakketten en omvatten in mijn belangrijkste HTML deze lijn:

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

Ik heb twee modules SiteMaster en verifiëren. De module SiteMaster is eenvoudig:

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

Het importeert alleen de Authenticate module en roept de functie run (). De js voor SiteMaster is als volgt:

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

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

})

Het probleem is dat wanneer ik blader de oplossing ontvang ik de fout:

Microsoft JScript runtime error: '__auth__' is undefined

Hoe kan ik dit probleem op te lossen ???

Bij voorbaat dank.

De vraag is gesteld op 06/10/2012 om 19:12
bron van user
In andere talen...                            


2 antwoorden

stemmen
5

Dank voor het instellen van deze up mvbaffa!

Op sample Valentin als je SiteMaster.ts veranderen in:

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

door het bewegen van de instructie import uit de verklaring module zal de juiste js code te genereren. Ik zal een bug op het typoscript CodePlex website te openen en zorg ervoor dat dit wordt opgelost. U kunt de tijdelijke oplossing van de huidige compiler [v0.8] doen als dit is een blokkerende probleem voor je.

antwoordde op 06/10/2012 om 22:51
bron van user

stemmen
4

Ik ben vrij veel ervan overtuigd dat dit is een fout in de compiler. Ik heb het probleem gereproduceerd met behulp van de volgende bronbestanden:

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>

Ik compileren de getypte teksten met behulp van

tsc --module amd SiteMaster.ts Authenticate.ts

Toen ik open de test.htmlin Firefox met Firebug, krijg ik de volgende foutmelding:

ReferenceError: __auth__ is not defined
var auth = __auth__;

De gecompileerde code voor SiteMaster.jsals volgt uitziet:

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

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

})

Afgaande op Typescript's taalspecificatie sectie 9.4.3 AMD Modules Ik zou iets in de trant van verwachten:

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

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

})

Dit is in overeenstemming met de voorbeelden in de taalspecificatie. Als anderen het eens zijn, kunnen we een bug in te dienen met het typoscript team.

antwoordde op 06/10/2012 om 21:10
bron van user

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