Γραφομηχανή AMD μονάδες στο Visual Studio

ψήφοι
4

Αρχίζω με γραφομηχανή χρησιμοποιώντας το Visual Studio 2012 Ultimate. Έχω αλλάξει MSBuild μου συμπεριλαμβανομένου του --module ετικέτα amd στην εντολή compiler. Ο compiler άρχισε να παράγει ενότητες AMD.

Έχω συμπεριλάβει στο RequireJS έργο μου από Nuget πακέτα και περιλαμβάνουν το κύριο HTML μου αυτή τη γραμμή:

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

Έχω δύο ενότητες Sitemaster και τον έλεγχο ταυτότητας. Η Sitemaster μονάδα είναι απλή:

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

Εισάγει μόνο τη μονάδα ελέγχου ταυτότητας και καλεί την πορεία λειτουργίας (). Το JS για Sitemaster είναι κάπως έτσι:

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

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

})

Το πρόβλημα είναι ότι όταν κάνω αναζήτηση της λύσης λαμβάνω το σφάλμα:

Microsoft JScript runtime error: '__auth__' is undefined

Πώς μπορώ να λύσω αυτό το πρόβλημα ???

Ευχαριστώ εκ των προτέρων.

Δημοσιεύθηκε 06/10/2012 στις 19:12
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
5

Ευχαριστώ για την άσκηση αυτή μέχρι mvbaffa!

Στο δείγμα του Βαλεντίν αν αλλάξετε SiteMaster.ts να:

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

μετακινώντας τη δήλωση των εισαγωγών από τη δήλωση της μονάδας που θα παράγει το σωστό js κώδικα. Θα ανοίξει ένα bug στο site CodePlex γραφομηχανή και βεβαιωθείτε ότι αυτό παίρνει σταθερό. Μπορείτε να κάνετε τη λύση για την τρέχουσα compiler [v0.8], αν αυτό είναι ένα ζήτημα αποκλεισμού για εσάς.

Απαντήθηκε 06/10/2012 στις 22:51
πηγή χρήστη

ψήφοι
4

Είμαι λίγο πολύ την πεποίθηση ότι πρόκειται για ένα σφάλμα στο μεταγλωττιστή. Έχω αναπαραχθεί το ζήτημα χρησιμοποιώντας τα ακόλουθα αρχεία προέλευσης:

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>

Έχω συγκεντρώσει τα δακτυλογραφημένα χρησιμοποιώντας

tsc --module amd SiteMaster.ts Authenticate.ts

Όταν ανοίγω το test.htmlσε Firefox με Firebug, παίρνω το ακόλουθο μήνυμα λάθους:

ReferenceError: __auth__ is not defined
var auth = __auth__;

Το μεταγλωττισμένο κώδικα για SiteMaster.jsεμφάνιση ως εξής:

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

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

})

Κρίνοντας από το τμήμα προδιαγραφές της γλώσσας γραφομηχανή του 9.4.3 AMD μονάδες θα περίμενα κάτι προς την κατεύθυνση της:

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

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

})

Αυτό είναι σύμφωνο με τα παραδείγματα στην προδιαγραφή γλώσσα. Αν οι άλλοι συμφωνούν, θα μπορούσαμε να υποβάλετε ένα σφάλμα με την ομάδα γραφομηχανή.

Απαντήθηκε 06/10/2012 στις 21:10
πηγή χρήστη

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