Gépelt AMD modulok a Visual Studio

szavazat
4

Én kezdő géppel a Visual Studio 2012 Ultimate rendszerben. Már megváltozott a MSBuild beleértve a --module amd címkét a fordító parancsot. A fordító kezdett generálni AMD modulokat.

Én többek között az én projekt RequireJS származó Nuget csomagok és tartalmazza a fő HTML ezt a sort:

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

Van két modulok SiteMaster és hitelesítésére. A modul SiteMaster egyszerű:

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

Ez csak importálja a Hitelesítés modul és meghívja a függvényt run (). A JS SiteMaster, mint ez:

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

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

})

A probléma az, hogy amikor böngészni a megoldást a következő hibaüzenet:

Microsoft JScript runtime error: '__auth__' is undefined

Hogyan lehet megoldani ezt a problémát ???

Előre is köszönöm.

A kérdést 06/10/2012 19:12
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
5

Köszönöm, hogy felhívta erre fel mvbaffa!

A Valentin minta, ha megváltoztatja a SiteMaster.ts:

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

azáltal, hogy a behozatali nyilatkozatot ki a modul nyilatkozat majd generálni a megfelelő js kódot. Majd nyissa meg a hibát a géppel codeplex oldalon, és győződjön meg róla, ez lesz fix. Ezt megteheti a megoldás a jelenlegi fordító [v0.8], ha ez egy blokkoló probléma az Ön számára.

Válaszolt 06/10/2012 22:51
a forrás felhasználó

szavazat
4

Én elég sokat győződve arról, hogy ez egy hiba a fordító. Reprodukáltam a kérdés a következő forrás fájlokat:

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>

Fordítsam a gépelt segítségével

tsc --module amd SiteMaster.ts Authenticate.ts

Amikor megnyitom a test.htmlFirefox Firebug, kapok a következő hiba:

ReferenceError: __auth__ is not defined
var auth = __auth__;

A lefordított kód SiteMaster.jsa következőképpen néz ki:

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

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

})

Ítélve géppel nyelvi specifikáció szakasz 9.4.3 AMD memóriamodulok azt várnánk valami mentén:

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

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

})

Ez összhangban van a példákat a nyelvi specifikáció. Ha mások egyetértenek, talán benyújtania hiba a géppel csapat.

Válaszolt 06/10/2012 21:10
a forrás felhasználó

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