2010-07-28 8 views
0

J'ai utilisé Dojo sur le CDN de Google. Je viens de télécharger la version de développement pour pouvoir faire du débogage. Lorsque vous utilisez dojo stocké localement, Firebug signale plusieurs erreurs de syntaxe. Tous ressemblent à ceci:

SyntaxError: syntax error 
(no script)(""en-us"")bootstrap.js (line 601) 
(no script)(""dojo.cldr"", ""number"")bootstrap.js (line 590) 
(no script)(""dojo.cldr"", ""number"")loader.js (line 634) 
(no script)(""./number.js"", ""dojo.number"")loader.js (line 76) 
(no script)(""dojo.number"")loader.js (line 411) 
(no script)(""./currency.js"", ""dojo.currency"")loader.js (line 76) 
(no script)(""dojo.currency"")loader.js (line 411) 
(no script)(""../dijit/form/CurrencyTextBox.js"", ""dijit.form.CurrencyTextBox"")loader.js (line 76) 
(no script)(""dijit.form.CurrencyTextBox"")loader.js (line 411) 
[Break on this error] (601 out of range 505) 
bootstrap.js (line 601) 

Je sais que j'ai Dojo configuré correctement tout au long de ma mise en page, des vues et des contrôleurs parce que fonctionne très bien si je dojo utiliser un CDN. J'ai également vérifié que le chemin local résout correctement, ce qu'il fait.

C'est ce que l'initialisation ressemble à l'aide CDN (cela fonctionne correctement):

<head> 
<?php echo $this->headMeta(); ?> 
<?php echo $this->headTitle(); ?> 
<?php echo $this->headLink(); ?> 
<?php echo $this->headScript(); 
if ($this->dojo()->isEnabled()) { 
    $this->dojo()->setCdnVersion('1.5') 
       ->addStyleSheetModule('dijit.themes.claro'); 
    echo $this->dojo(); 
} 
?> 
</head> 

Et voici à quoi il ressemble en utilisant la version locale:

<head> 
<?php echo $this->headMeta(); ?> 
<?php echo $this->headTitle(); ?> 
<?php echo $this->headLink(); ?> 
<?php echo $this->headScript(); 
if ($this->dojo()->isEnabled()) { 
    $this->dojo()->setLocalPath('/js/dojo/dojo.js') 
       ->addStyleSheetModule('dijit.themes.claro') 
       ->setDjConfigOption('parseOnLoad', true) 
       ->setDjConfigOption('isDebug', true); 
    echo $this->dojo(); 
} 
?> 
</head> 

Qu'est-ce que je fais mal avec le chemin local qui fait que ces erreurs de syntaxe se produisent?

Répondre

2

Il semble que vous devez « construire » dojo lorsque vous téléchargez la source et que vous voulez exécuter localement. D'une manière ou d'une autre, j'ai manqué cela comme une exigence d'utiliser une version locale du dojo. En tout cas, j'ai finalement réussi à faire fonctionner le dojo correctement localement en faisant une construction personnalisée. J'ai trouvé cette référence très utile dojo:

http://docs.dojocampus.org/quickstart/custom-builds

Dans le dossier util/dans la distribution scripts de constructions de dojo, il y a plusieurs profils de construction prédéfinis ainsi. Je suppose que vous pourriez utiliser l'un d'entre eux pour construire toute la distribution du dojo, mais je me suis dit que si j'allais avoir autant de problèmes, je pourrais en tirer une version optimisée.

Mon profil de construction a fini par ressembler à ceci:

dependencies ={ 

    layers: [ 
     { 
     name: "mydojo.js", 
     dependencies: [ 
      "dojox.grid.DataGrid", 
      "dojox.Data.QueryReadStore", 
      "dijit.form.ComboBox", 
      "dijit.form.ValidationTextBox", 
      "dijit.form.CurrencyTextBox", 
      "dijit.form.PasswordTextBox", 
      "dijit.form.RadioButton", 
      "dijit.form.Button", 
      "dijit.form.CheckBox", 
      "dijit.form.DateTextBox" 
     ] 
     } 
    ], 

    prefixes: [ 
     [ "dijit", "../dijit" ], 
     [ "dojox", "../dojox" ] 
    ] 

}; 

J'ai placé dans le fichier/util/scripts de constructions/dossier profils, nommé "myProfile.profile.js".

Ensuite, j'ai couru le script de compilation de/util/scripts de constructions:

./build.sh profile=myProfile action=release optimize=shrinksafe.keepLines layerOptimize=shrinksafe.keepLines releaseName=myRelease localeList=en-us,es-es version=0.1.dev 

Copiez le résultat de la construction/release/myRelease dans le dossier javascript de votre site Web, à savoir/js/myRelease /.

Les options de ligne de commande importantes sont "profil" et "action", les autres sont facultatives.Vous pouvez obtenir une description complète de ce que chaque option de ligne de commande signifie à l'URL que j'ai fournie ci-dessus. J'ai adapté ces options à mes besoins particuliers - les vôtres peuvent être très différents et je ne les ai fournis qu'à titre d'exemple de ce à quoi ressemblait le mien à la fin. Si vous utilisez Windows, remplacez "build.sh" par "build.bat".

Ensuite, pour définir Zend utiliser cette version, je l'ai fait ce qui suit dans mon fichier layout.phtml:

if ($this->dojo()->isEnabled()) { 
     $this->dojo()->setLocalPath($this->baseUrl() . '/js/myRelease/dojo/dojo.js') 
      ->addStyleSheetModule('dijit.themes.claro') 
      ->setDjConfigOption('isDebug', true) 
      ->setDjConfigOption('debugAtAllCosts', true) 
      ->addLayer($this->baseUrl() . '/js/myRelease/dojo/mydojo.js')     
      ; 
} 

En utilisant « addLayer » pour la construction personnalisée est ce qui a finalement obtenu ce travail pour moi. J'espère que cela aidera à sauver quelqu'un d'autre un peu de temps!

0

J'ai eu exactement le même problème. Cela semble avoir quelque chose à voir avec la localisation mais je n'arrive pas à comprendre la raison.

Il existe cependant une solution de rechange qui fera l'affaire dans certains cas: Dans le répertoire dijit/nls, créez des répertoires en et en-us et copiez-y les fichiers common.js et loader.js.

Vous devrez peut-être faire cela pour plus d'un dijit, selon l'endroit où le dijit recherche les fichiers de localisation.

Si vous rencontrez une meilleure solution, MikeH, s'il vous plaît le poster ici. Plus tôt aujourd'hui, j'ai posté ce problème sur le forum dojo et je ferai un suivi en créant un lien vers ce sujet. J'espère que quelqu'un aura une solution non-stopgap.

ken

+0

Je n'ai pas eu de chance en regardant le problème des paramètres régionaux, mais j'ai finalement généré une solution de travail aujourd'hui qui n'est pas une solution de contournement. Je l'ai posté comme une réponse ci-dessous. J'espère que cela vous aidera à faire avancer les choses de votre côté! J'apprécie la contribution que vous m'avez donnée car elle m'a permis de me pencher là-dessus ;-) – MikeH

+0

Merci MikeH. Je pense que ce que je vais faire, c'est simplement d'utiliser une version construite, puis de faire une version personnalisée avant de la publier, comme vous l'avez décrit ci-dessous. Les versions personnalisées sont définitivement la solution à adopter pour une version finale, car elles permettent de réduire la taille et d'optimiser les performances de votre application. Juste pour compléter ce fil, voici un lien du forum Dojo qui pointe le problème avec les fichiers manquants et indique qu'il est dû aux versions non-construites/source de Dojo: http: // dojo-toolkit. 33424.n3.nabble.com/1-4-error-missing-files-tp327313p327313.html – KenP

Questions connexes