Typoskript AMD-Module in Visual Studio

stimmen
4

Ich beginne mit Typoskript Visual Studio 2012 Ultimative verwenden. Ich habe meine MSBuild einschließlich dem --module amd-Tages in dem Compiler-Befehl geändert. Der Compiler gestartet AMD-Module zu erzeugen.

Ich habe in meinem Projekt gehören RequireJS von Nuget Pakete und sind in meinem Haupt-HTML diese Zeile:

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

Ich habe zwei Module Sitemaster und Authentifizieren. Das Modul Sitemaster ist einfach:

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

Es importiert nur das Authentifizieren Modul und ruft die Funktion run (). Die js für Sitemaster ist wie folgt:

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

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

})

Das Problem ist, dass, wenn ich die Lösung zu sehen ich die Fehlermeldung:

Microsoft JScript runtime error: '__auth__' is undefined

Wie kann ich dieses Problem lösen ???

Danke im Voraus.

Veröffentlicht am 06/10/2012 um 19:12
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
5

Vielen Dank für bringen diese bis mvbaffa!

wenn Sie SiteMaster.ts auf Valentins Probe ändern:

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

durch Bewegen der Import-Anweisung aus der Modul Erklärung wird es den richtigen js-Code generieren. Ich werde einen Fehler auf der Typoskript Codeplex-Website öffnen und sicherstellen, dass dieses Problem behoben wird. Sie können die Problemumgehung auf dem aktuellen Compiler tun [v0.8], wenn diese ein blockierende Problem für Sie.

Beantwortet am 06/10/2012 um 22:51
quelle vom benutzer

stimmen
4

Ich bin ziemlich überzeugt, dass dies ein Fehler in dem Compiler. Ich habe das Problem mit den folgenden Quelldateien wiedergegeben:

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>

Ich kompilieren die Maschinenschriften mit

tsc --module amd SiteMaster.ts Authenticate.ts

Wenn ich das öffnen test.htmlin Firefox mit Firebug, bekomme ich folgende Fehlermeldung:

ReferenceError: __auth__ is not defined
var auth = __auth__;

Der kompilierte Code für SiteMaster.jssieht wie folgt aus :

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

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

})

Geht man von Typoskript der Sprachspezifikation Abschnitt 9.4.3 AMD Module würde ich etwas entlang der Linien von erwarten:

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

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

})

Dies steht im Einklang mit den Beispielen in der Sprachspezifikation. Wenn andere zustimmen, könnten wir einen Fehler mit dem Typoskript Team einreichen.

Beantwortet am 06/10/2012 um 21:10
quelle vom benutzer

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