2013-04-09 66 views
1

我就severals問題,運行的時候我想在我的項目運行的節點RequireJS。RequireJS優化與CoffeeScript的

這是我的文件夾結構:

-root 
    -/src 
     -App.coffee 

    -/static 
     -/vendor 
      -/plugin 
       -r.js 
       -coffee-script.js 

      -/lib 
       -jquery.js 

      -main.js 

    -build.js 

這是我build.js文件:

({ 
    appDir   : './', 
    baseUrl   : './static/js/', 
    dir    : '../public', 
    optimize  : 'uglify', 
    exclude   : ['coffee-script'], 
    stubModules  : ['cs'], 

    paths: { 

     // Libraries 

     'modernizr'  : 'vendor/modernizr', 
     'jquery'  : ['//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min', 'vendor/jquery'], 
     'jqueryui'  : 'vendor/jquery-ui', 
     'backbone'  : 'vendor/backbone', 
     'underscore' : 'vendor/underscore', 

     // Plugins 

     'plugin'  : 'plugin/plugin', 

     // RequireJS 

     'cs'   : 'plugin/cs', 
     'coffee-script' : 'plugin/coffee-script' 

    }, 
    shim: { 

     'jqueryui' : ['jquery'], 

     'underscore': { 
      exports: '_' 
     }, 

     'backbone': { 
      deps: ['underscore', 'jquery'], 
      exports: 'Backbone' 
     } 
    }, 
    modules: [{ 
     name: "main" 
    }] 
}) 

最後,這是我main.js文件:

require({ 
    baseUrl : '../../src/', 
    paths: { 
    cs: '../../cs', 
    'coffee-script': '../../coffee-script' 
    } 
}, ['cs!App']); 

我總是出現與錯誤路徑設置有關的錯誤,我無法弄清楚我錯在哪裏。

謝謝!

回答

0

下面的解決方案適用於我的情況。對於使用墊片導入的非amd模塊或手動包裝的常見問題(例如this之一,帶有自定義路徑)。

嘗試避免相對路徑,並使用絕對路徑代替。 從別名模塊調用的依賴項將使用其當前位置來查找所需的模塊。

require.config(
{ 
    locale: window.GIS.i18n.locale, 
    deps: ['cs!modules/main'], 
    paths: { 
    'i18n'      : 'i18n', 
    'underscore'     : 'libs/underscore', 
    'cs'       : 'libs/cs', // there's no '../something/else/libs/cs' 
    'CoffeeScript'    : 'libs/coffeescript', // ibidem. 
    'text'      : 'libs/text', 
    // ... other amd module aliases go here... 
    }, 

    shim:{ 
    // ... 
    } 

}); 

define(['cs!modules/main'], function(){}); 

當然,這些都不是絕對路徑本身,但它們是相對於你的模塊樹的根。