Maszynopis AMD Moduły w Visual Studio

głosy
4

Zaczynam z maszynopisu za pomocą Visual Studio 2012 Ultimate. Ja zmieniłem MSBuild tym --module tagu amd w poleceniu kompilatora. Kompilator zaczął generować moduły AMD.

Mam to w moich RequireJS projektu z Nuget Pakiety obejmują w moim głównym HTML tej linii:

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

Mam dwa moduły Sitemaster i uwierzytelniania. Moduł SiteMaster jest prosta:

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

To po prostu importuje moduł uwierzytelniania i wywołuje run () funkcji. JS dla SiteMaster jest tak:

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

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

})

Problem polega na tym, że kiedy przeglądać rozwiązanie otrzymuję błąd:

Microsoft JScript runtime error: '__auth__' is undefined

Jak mogę rozwiązać ten problem ???

Z góry dziękuję.

Utwórz 06/10/2012 o 19:12
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
5

Dzięki za zwrócenie się mvbaffa!

Na próbce Valentin jeśli zmienisz SiteMaster.ts do:

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

przesuwając instrukcję import z deklaracją moduł wygeneruje poprawnego kodu JS. Otworzę błąd na stronie codeplex maszynopis i upewnić się, że zostanie naprawiony. Można zrobić obejście na bieżącym kompilatora [v0.8] Jeżeli jest to kwestia blokowania dla Ciebie.

Odpowiedział 06/10/2012 o 22:51
źródło użytkownik

głosy
4

Jestem prawie przekonany, że jest to błąd kompilatora. Mam powielana problem stosując następujące pliki źródłowe:

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 skompilować maszynopisy pomocą

tsc --module amd SiteMaster.ts Authenticate.ts

Kiedy otworzy się test.htmlw przeglądarce Firefox z Firebug, pojawia się następujący błąd:

ReferenceError: __auth__ is not defined
var auth = __auth__;

Kod skompilowany dla SiteMaster.jswygląda następująco:

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

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

})

Sądząc maszynopis specyfikacją języka sekcji 9.4.3 AMD Moduły spodziewałbym coś wzdłuż linii:

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

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

})

Jest to zgodne z przykładami w specyfikacji języka. Jeśli inni zgadzają się, możemy złożyć bug z zespołem maszynopis.

Odpowiedział 06/10/2012 o 21:10
źródło użytkownik

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