2010-07-28 56 views
0

我一直在使用托管在Google CDN上的Dojo。我只是下载了开发版本,所以我可以做一些调试。当使用本地存储的dojo时,Firebug会报告几个语法错误。他们都看起来像这样:

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) 

我知道我有道场正确设置我的整个布局,视图和控制器,因为如果我使用一个CDN道场正常工作。我也已经验证了localpath正确地解析了它。

这是初始化的样子使用CDN(此工作正常):

<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> 

而这正是它看起来像使用本地版本:

<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> 

我在做什么错与使这些语法错误发生的本地路径?

回答

2

看来,你有,当你下载源代码并想在本地运行它以“建”道场。不知何故,我错过了这是使用dojo的本地路径版本的要求。无论如何,我终于可以通过自定义构建让dojo在本地正确运行。我发现这个道场引用非常有帮助:

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

在道场分布UTIL/buildscripts文件夹中,有几个预定义的构建曲线为好。我怀疑你可以使用其中的一种来构建整个dojo发行版,但我想如果我遇到这么多麻烦,不妨从它中获得一个优化版本。

我的建造轮廓结束这样看:

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" ] 
    ] 

}; 

我把这个在/ UTIL/buildscripts/Profiles文件夹,命名为 “myProfile.profile.js”。

然后,我跑了构建脚本/ UTIL/buildscripts:

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

复制生成的建立从/发行/ myRelease到您的网站的JavaScript文件夹,即/ JS/myRelease /。

重要的命令行选项是“profile”和“action”,其他选项是可选的。您可以在上面提供的url处获得每个命令行选项意义的完整描述。我根据自己的特殊需求定制了这些选项 - 您的选择可能会非常不同,我只是将它们作为最终示例。如果你在windows上,而不是“build.sh”,使用“build.bat”。

然后,设置Zend公司使用这个版本,我做我的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')     
      ; 
} 

使用“addLayer”自定义版本是什么终于得到了这个工作对我来说。我希望这能帮助别人节省一点时间!

0

我有完全相同的问题。这似乎与本地化有关,但我无法弄清楚原因。

尽管如此,在某些情况下可以完成这项工作:在dijit/nls目录中,创建en和en-us目录并将common.js和loader.js文件复制到其中。

您可能必须为多个dijit执行此操作,具体取决于dijit查找本地化文件的位置。

如果您遇到更好的解决方案,请将其发送到此处。今天早些时候,我将这个问题发布到dojo论坛,并通过链接到此主题进行跟进。希望有人会有一个不间断的修复。

+0

我没有看到语言环境问题的任何运气,但我今天终于生成了一个工作解决方案,这不是一种解决方法。我把它作为下面的答案发布。我希望它能帮助你把事情做到最后!我很欣赏你给的意见,因为它让我再次看到这一点;-) – MikeH 2010-08-08 18:30:04

+0

谢谢MikeH。 我想我会做的只是使用一个内置版本,然后在我们发布之前进行自定义生成,如下所述。自定义构建绝对是最终发布的途径,因为它们真正将尺寸缩小并针对您的应用需求进行优化。 只是为了完成这个线程,这里是Dojo论坛的一个链接,指出丢失文件的问题,并指出它是由于Dojo的非内置/源版本: http:// dojo-toolkit。 33424.n3.nabble.com/1-4-error-missing-files-tp327313p327313.html – KenP 2010-08-11 19:50:15

相关问题