Módulos AMD mecanografiado en Visual Studio

votos
4

Estoy empezando con el texto mecanografiado utilizando Visual Studio 2012 Último. He cambiado de MSBuild incluyendo la etiqueta amd --module en el comando del compilador. El compilador comenzó a generar módulos de AMD.

He incluir en mis RequireJS proyecto de Paquetes Nuget e incluir en mi HTML principal de esta línea:

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

Tengo dos módulos SiteMaster y autenticar. El módulo de SiteMaster es simple:

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

Sólo importa el módulo Autenticación y llama a la función run (). El js para SiteMaster es la siguiente:

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

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

})

El problema es que cuando hojeo la solución recibo el error:

Microsoft JScript runtime error: '__auth__' is undefined

Como puedó resolver esté problema ???

Gracias por adelantado.

Publicado el 06/10/2012 a las 19:12
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
5

Gracias por traer esto mvbaffa!

En la muestra de Valentin si cambia SiteMaster.ts a:

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

moviendo la declaración de importación de la declaración del módulo que va a generar el código JS correcta. Voy a abrir un error en el sitio CodePlex mecanografiado y asegurarse de que esto se arregla. Se puede hacer la solución en el compilador actual [v0.8] si esto es un problema de bloqueo para usted.

Respondida el 06/10/2012 a las 22:51
fuente por usuario

votos
4

Estoy casi convencido de que esto es un error en el compilador. He reproducido el problema mediante los siguientes archivos de código fuente:

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>

Compilo los mecanografiados utilizando

tsc --module amd SiteMaster.ts Authenticate.ts

Cuando abro el test.htmlde Firefox con Firebug, me sale el siguiente error:

ReferenceError: __auth__ is not defined
var auth = __auth__;

El código compilado para SiteMaster.jsel siguiente aspecto:

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

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

})

A juzgar por la sección de especificación del lenguaje mecanografiado 9.4.3 Módulos de AMD que se puede esperar algo a lo largo de las líneas de:

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

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

})

Esto está en línea con los ejemplos de la especificación del lenguaje. Si otros están de acuerdo, podríamos enviar un error con el equipo mecanografiado.

Respondida el 06/10/2012 a las 21:10
fuente por usuario

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