2010-08-06 35 views
4

J'ai une collection de fichiers Javascript qui constituent ensemble un système. Différentes parties du système se trouvent dans des espaces de noms (globaux) différents (par exemple, NSA, NSB, etc.) et ces espaces de noms peuvent être des objets, par ex.Compresseur YUI: trouvé un symbole non déclaré

NSA = { 
    ... lots of stuff ... 
} 

Maintenant, dans mes différents modules, je peux avoir un code tel que:

NSA.method(); 

Mon code JSLints propre parce que je déclare ces objets namespaced dans un commentaire en haut du fichier:

/*global dNSA NSB NSC */ 

Quand je lance YUI Compressor (v 2.4.2) sur ces fichiers avec le commutateur -v (verbeux), il émet des avertissements sur les objets référencés, namespaced tels que:

Found an undeclared symbol: $ 

et c'est pour l'utilisation de $ pour jQuery!

Que puis-je faire pour définir ces variables afin que YUI Compressor n'émette pas l'avertissement, et pourtant tout ce que j'ajoute ne peut pas provoquer une modification de l'objet.

+1

Ahh - semble que c'est une capacité désirée non encore fournie. Un ticket existe: http://yuilibrary.com/projects/builder/ticket/21 – Zhami

+0

Je suis moi aussi confronté au même problème. – James

+0

Assurez-vous d'utiliser un problème à jour. J'ai eu ce problème jusqu'à ce que j'ai changé pour la version 1.3.1.2 – Patrick

Répondre

2

La bibliothèque YUI ne reconnaît pas Jquery, elle "pense" donc qu'il s'agit d'une erreur. On dirait que ce n'est pas grave.

+2

Ce n'est pas un problème spécifique avec jQuery, mais avec toute valeur globale que j'utilise dans différents fichiers qui sont tous chargés dans la même application. JSLint fournit un mécanisme pour lui indiquer qu'une partie globale est définie en dehors du fichier en cours. J'espérais que YUIC fournirait des fonctionnalités similaires. – Zhami

0

Ajouter

var $ = window.$; 

à votre code.

+0

J'ai essayé ceci, mais hélas cela provoque une défaillance critique sous I.E., qui ne conserve pas la valeur de $. Je ne peux pas imaginer pourquoi pas. – Zhami