2012-12-12 34 views
5

如果我在沒有「namespace:'foo'」標誌的情況下運行優化器,那麼一切都按預期工作。當我添加「命名空間:‘富’」到app.build.js我得到這個錯誤:RequireJS + jQuery命名空間問題

GET: file:// (path to the project) /require-jquery/jquery-require-sample/webapp/jquery.js
main-built.js:main-built.js:1839

Uncaught Error: Script error http://requirejs.org/docs/errors.html#scripterror
main-built.js:163

我已經看了看周圍的解決方案,但有使用RequireJS優化導出單個文件一點信息,使用jQuery和命名空間。謝謝!

我已經把RequireJS + jQuery的樣本項目(具有修改app.build.js和app.html)on github here.

({ 
    baseUrl: ".", 
    out: 'main-built.js', 
    //Comment out the optimize line if you want 
    //the code minified by UglifyJS 
    optimize: "none", 

    paths: { 
     "jquery": "require-jquery" 
    }, 

    name: 'main', 
    namespace: 'foo' 
}) 

回答

0

嘗試刪除名稱參數,而不是(除非你真的需要它)。

0

我知道我遲到了這裏的派對,但是這個線索很容易通過Google搜索找到。

jquery在其中有AMD檢測。 您正在使用requirejs的名稱空間,並且導致define函數的所有調用都發生一些更改。

這將導致jQuery的變化,只是打破它(或者只是實際定義的代碼,但您的命名空間的呼叫無論如何都不會工作)

我目前正在爭取這個問題。我看到以下選項:

  1. 使用jQuery全球範圍內,就像是2005年
  2. 黑客需要命名空間來了解AMD檢測
  3. 砍一起墊片的jQuery,使其工作

我去嘗試第三種選擇,並且如果有任何要報告的東西,請回報

命名空間在墊片內也起作用:(它沒有任何意義,但它只是。截至目前,我還沒有任何想法如何使它與shim一起工作,而不會對jquery本身進行任何更改。如果你想擺弄jquery,最後會有一行測試define是否是定義AMD模塊的函數。打破這條線(例如,通過添加false &&),你有一個工作墊片。