2013-02-19 91 views
1

由於項目中的FUBAR目錄組織,我花了一些時間在所述項目上重新組織JS腳本。該項目使用requirejs並且在重組之前運行良好。然而,當運行時,沒有任何東西在加載時調用(我們使用r.js優化器),儘管編譯完成時沒有抱怨。我已經檢查過,重複檢查過,三重檢查過,現在請求在Stack Overflow上再次提供一些眼睛。requirejs配置問題

使用RequireJS:2.1.4和2.1.4 r.js

以下是我的配置:

積聚js.js(用於優化器)

var requirejs = require('requirejs'); 

var config = { 
    baseUrl: './public/js', 
    mainConfigFile: './public/js/config/config.js', 
    paths: { 
     'requireLib': 'library/require' 
    }, 
    out: ".public/js/minified/main.js", 
    name: "minified/main", 
    wrap: false, 
    preserveLicenseComments: false, 
    deps: ["app/main","modules/movie","modules/theatre"] 
}; 

requirejs.optimize(config); 

配置。 JS

// Set the require.js configuration for your application. 
require.config({ 
    paths: { 
     // JavaScript folders 
     libs: "library", 
     plugins: "plugin", 
     app: "app", 
     adminlibs: "../adminassets/js/plugins/ui", 

     // Libraries 
     jquery: "library/jquery", 
     jqcookie: "library/jquery.cookie", 
     jqui: "../adminassets/js/plugins/ui/jquery-ui-1.10.0.custom.min", 
     jqezmark: "library/jquery.ezmark", 
     jqcolor: "library/jquery.color", 
     underscore: "library/underscore-amdjs", 
     backbone: "library/backbone-amdjs", 
     chosen: "library/chosen.jquery", 
     moment: "library/moment", 

     // Site Components 
     site: "app/site", 
     sitediscussion: "app/site-discussion", 
     namespace: "app/namespace", 

     // Plugins 
     text: "plugin/text", 
     async: "plugin/async", 
     use: "plugin/use", 
     datetimepicker: "../adminassets/js/plugins/ui/jquery.datetimepicker", 
     ajaxfileupload: "../adminassets/js/plugins/uploader/jquery.ajaxfileupload" 
    }, 

    shim: { 
     'chosen': ['jquery'], 
     'jqcookie': ['jquery'], 
     'jqui': ['jquery'], 
     'jqezmark': ['jquery'], 
     'jqcolor': ['jquery'], 
     'site': { 
      deps: ['jquery','jqezmark','chosen','underscore','namespace','jqui','jqcookie'], 
      exports: 'site' 
     }, 
     'sitediscussion': { 
      deps: ['jquery', 'underscore'], 
      exports: 'sitediscussion' 
     }, 
     'jquifull' : ['jquery'], 
     'datetimepicker' : ['jqui'], 
     'ajaxfileupload' : ['jquery'], 
     'backbone': ['underscore','jquery'] 
    }, 

    // Initialize the application with the main application file 
    deps: ["app/main"] 
}); 

文件結構如下:

{站點根目錄} /公/ JS

其中包含目錄:

應用 配置 庫 精縮 模塊 插件 模板

在建-JS和配置上面列出的所有文件.js被確認在預期的文件夾中。

requirejs被稱爲如下:

在dev的機器(這我目前正在測試的設置):
數據主要= 「/ JS /配置/配置」 SRC =「/ JS /庫/require.js「

在生產(目前精縮/主文件甚至沒有被創建,但它應該是)
數據主要=‘/ JS /縮小的/主’SRC =」/JS /庫/require.js「

任何人都可以看到我可能做錯了什麼嗎?同樣,除了上面列出的兩個文件(build-js.js和config.js)之外,網站本身,javascript等都沒有發生變化。唯一的變化是文件已經物理移動到目錄結構中。因此,我幾乎肯定我在某個地方有一個路徑問題,但我似乎無法找到它。幫幫我?

+0

你從r.js得到任何錯誤嗎?是否有任何東西獲得輸出腳本明智? – 2013-02-20 15:08:10

回答

1

分辨率已找到。我通過在「/ js/config/config」中的requirejs include腳本標記中的data-main屬性來引用我的配置文件。雖然我聲明瞭/ public/js的基路徑,但系統仍嘗試使用/ js/config /作爲我的基路徑(如requirejs文檔中所述,它將基於您的data-main屬性進行基礎路徑,如果基本路徑不另外聲明)。我將我的config.js文件移動到/ js,並將data-main更改爲/ js/config,現在所有路徑都正常工作,引用base-path/js。

一個側面說明是我沒有注意到因爲我使用Zend Framework和錯誤處理而導致文件加載失敗。沒有404錯誤和我的開發工具的網絡選項卡顯示成功加載所有.js文件......只有當我查看這些文件的響應內容時,我發現它們正在吐出PHP錯誤日誌比.js內容。