Strojopis AMD Moduly ve Visual Studiu

hlasů
4

Začínám s psacím stroji pomocí Visual Studio 2012 Ultimate. Změnil jsem MSBuild včetně --module amd tagu v příkazu kompilátoru. Kompilátor začala generovat AMD modulů.

Jsem zahrnout do svých projektů RequireJS z nuget balíčků a obsahují ve svém hlavním HTML tento řádek:

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

Mám dva moduly SITEMASTER a ověření. Modul SiteMaster je jednoduchý:

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

Je to jen importuje modul Authenticate a volá funkci run (). JS pro SITEMASTER je takhle:

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

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

})

Problém je, že když jsem se procházet řešení I chybová zpráva:

Microsoft JScript runtime error: '__auth__' is undefined

Jak mohu vyřešit tento problém ???

Díky předem.

Položena 06/10/2012 v 19:12
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
5

Díky za uvedení tohoto nahoru mvbaffa!

Na vzorku Valentin, pokud změníte SiteMaster.ts na adresu:

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

pohybem příkaz import z deklarace modulu bude generovat správný kód v JavaScriptu. Otevřu chybu na CodePlex stránce strojopisu a ujistěte se, že to dostane fixní. Můžete udělat řešení na současném kompilátor [v0.8], pokud se jedná o problém blokování pro vás.

Odpovězeno 06/10/2012 v 22:51
zdroj uživatelem

hlasů
4

Jsem skoro přesvědčen, že se jedná o chybu v kompilátoru. I reprodukovali problém pomocí následujících zdrojové soubory:

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>

I kompilovat přepsaný text pomocí

tsc --module amd SiteMaster.ts Authenticate.ts

Když jsem se otevřít test.htmlve Firefoxu s Firebug, dostanu následující chybu:

ReferenceError: __auth__ is not defined
var auth = __auth__;

Sestavený kód SiteMaster.jsvypadá následovně:

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

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

})

Soudě podle strojopisu je specifikace jazyka oddílu 9.4.3 AMD moduly bych očekával něco v duchu:

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

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

})

To je v souladu s příklady ve specifikaci jazyka. Pokud ostatní souhlasit, mohli bychom předložit chyba s strojopisu týmem.

Odpovězeno 06/10/2012 v 21:10
zdroj uživatelem

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