Visual Studio typescript AMD Modülleri

oy
4

Ben typescript Visual Studio 2012 Ultimate kullanarak başlıyorum. Ben derleyici komutu --module amd etiketi dahil benim MSBuild değişti. derleyici AMD modüllerini üretmek başladı.

Ben Nuget Paketleri benim proje RequireJS dahil ve benim ana HTML bu hat dahil adres:

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

İki Modüller SiteMaster ve kimlik doğrulaması yap var. Modül SiteMaster basittir:

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

Bu sadece kimlik doğrulaması modülü ithal ve fonksiyon çalıştırmak çağırır (). SiteMaster için js şu şekildedir:

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

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

})

Sorun çözümü gezinirken ben hata alırsınız olmasıdır:

Microsoft JScript runtime error: '__auth__' is undefined

Bu sorunu nasıl çözebilirim ???

Şimdiden teşekkürler.

Oluştur 06/10/2012 saat 19:12
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
5

mvbaffa bu kadar getirdiğin için teşekkürler!

Valentin'ın numunenin sitesinde SiteMaster.ts geçtiğinizdeyse:

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

Modül beyanı dışında import ifadesini taşıyarak doğru js kodu oluşturur. Ben typescript codeplex sitesinde bir hata açmayı ve bu düzeltilmesini sağlayacağız. bu sizin için bir engelleme sorun olup olmadığını Geçerli derleyici [v0.8] üzerindeki geçici çözümü yapabilirsiniz.

Cevap 06/10/2012 saat 22:51
kaynak kullanıcı

oy
4

Hemen hemen ikna bu derleyici bir hata olduğunu duyuyorum. Aşağıdaki kaynak dosyalarını kullanarak sorunu yeniden var:

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>

Ben kullanarak yazısı metinler derlemek

tsc --module amd SiteMaster.ts Authenticate.ts

Ben açtığınızda test.htmlFirebug ile Firefox'ta, ben şu hatayı alıyorum:

ReferenceError: __auth__ is not defined
var auth = __auth__;

Için derlenmiş kod SiteMaster.jsgörünüyor şöyle:

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

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

})

Typescript dil şartname bölümünden bakılırsa 9.4.3 AMD Modülleri ben çizgisinde bir şey beklenebilir:

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

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

})

Bu dil şartnamede örneklerle uyumludur. Başkaları kabul ederseniz, biz typescript ekibine hata teslim olabilir.

Cevap 06/10/2012 saat 21:10
kaynak kullanıcı

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