2011-11-21 24 views
3

我使用的建築系統,它提供了試圖建立一個Dojo應用程序。我有一個主要的index.php文件加載道場,dijit的和DojoX中圖書館大廈道場應用:層下載而不是負載

項目的結構是這樣的:

 
--root 
    --_profile 
    --_release 
    --dojo-1.3.2-src 
    -- dijit 
    -- dojo 
    -- dojox 
    -- util 
    --myApp 
    --init.js 
    --folders_with_all_my_code 
    --index.php 

在_profile文件夾中,我有我myApp.profile.js包括本:

dependencies = { 

    stripConsole : 'all', 
    action  : 'clean,release', 
    optimize : 'shrinksafe', 
    releaseName : 'myApp', 
    localeList : 'fr,es,it', 

    layers: [ 
     { 
      name  : "../app/init.js", 
      resourceName : "myApp.init", 
      dependencies : [ 
        "myApp.init" 
      ] 
     } 
    ], 

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

}; 

我推出這個腳本來建立應用程序:

cd ../dojo-1.3.2-src/util/buildscripts 

./build.bat profileFile=../../../_profile/myApp.profile.js releaseDir=../../../_release 

它建立確定並設置_release DIR預期:

 
--root 
    --_profile 
    --_release 
    -- myapp 
     -- app 
      -- all_my_code 
      -- nls 
      -- init.js.uncompressed.js 
      -- init.js (a 2Mb file with all compressed dependencies) 
     -- dijit 
     -- dojo 
     -- dojox 
     -- util 
    --dojo-1.3.2-src 
    -- dijit 
    -- dojo 
    -- dojox 
    -- util 
    --myApp 
    -- 
    --index.php 

在index.php文件中,在構建之前我有這樣的:

var djConfig = { 
    parseOnLoad: true, 
    usePlainJson: true, 
    modulePaths : { 'app' : '../../myApp/app' } 
}; 

script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script 
script ... dojo.require('app.init'); ... /script 

和工作正常。但是,一旦我有我的層編譯我應該改變指向的dojo.js指向新創建一個指向考慮dojo.require新的壓縮層的腳本。由於我比層的位置指定的配置文件是和原來一樣的init,js文件,我得到這個:

var djConfig = { 
    parseOnLoad: true, 
    usePlainJson: true, 
    <s>modulePaths : { 'app' : '../../myApp/app' }</s> 
}; 

<s>script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script</s> 
<s>script ... dojo.require('app.init'); ... /script</s> 

script ... src="/_release/myApp/dojo/dojo.js"> ... /script 
script ... dojo.require('app.init'); ... /script 

其實當我啓動應用它正確加載只有一個文件,所以我猜測一切都順利的路徑。實際上,在Firebug日誌中,我可以看到GET請求,如果我擴展它,我可以看到所有的應用程序壓縮。然而僅僅加載它之後它推出一個例外:

Could not load 'app.init'; last tried '../../myApp/app/init.js' 

我不知道,但它並不似乎是與路徑的問題,因爲它是下載文件init.js,所以現在我有點困惑。

有什麼想法?

謝謝!

+0

我正在使用完全相同的結構的測試項目,而是加載自己的所有的部件,我只是包括一些dependendies並能正常工作。它正確地加載文件並加載應用程序(順便超快),所以我想是某種錯誤進入代碼。但是在編譯生成系統發現代碼中的一些JS錯誤,所以我想,如果會有這將是任何錯誤仍然告訴我好嗎?如果它可以下載整個文件,爲什麼不加載應用程序? – luso

+0

難道是某些問題的i18n文件?我不明白爲什麼它會創建nls文件夾,... – luso

+0

所以,在這裏的情況:通常,錯誤(無法加載...)出現如果: 找不到文件(不是這個,它下載它) 你忘了dojo.provide()文件(不是這個,是第一行) 代碼中有一個錯誤:我想它一定是這樣的,但是當應用程序沒有建立時,它工作正常,我想道場建設者不會引入錯誤... – luso

回答