2014-01-28 30 views
0

嘗試使用requirejs-rails(使用Rails 4)預編譯我的Backbone資產。我一直在打一個障礙,需要-js抱怨requirejs-rails AMD錯誤「其中有很多匿名模塊」

Error: Error: application.js has two many anonymous modules in it. 

這似乎是一個RequireJS錯誤。谷歌搜索發現this Github issue,我不明白。

我確實發現問題在於AMD條件如下的任何庫。我想這與將自己註冊爲匿名模塊有關。如果我刪除這些條件,那麼requirejs-rails不會再抱怨,我可以編譯優化文件,然後在Rails中運行。

但是從我的所有外部庫手動刪除這些AMD條件是不可持續的。

任何人有更好的建議嗎?我的requirejs.yml文件已正確設置。

注意:我使用的requirejs護欄this fork由於主代碼不使用Rails 4

作爲一個手邊的工作:我能夠使用相同的代碼而不刪除非Rails應用程序中的AMD位直接調用r.js(而不是requirejs-rails)來優化代碼。我不確定爲什麼在r.js沒有的時候,requirejs-rails的優化會跳出這個錯誤。我認爲requirejs-rails在底下調用r.js?是什麼原因造成的錯誤

例子:

(function (root, doc, factory) { 
if (typeof define === "function" && define.amd) { 
    // AMD. Register as an anonymous module. 
    define([ "jquery" ], function ($) { 
     factory($, root, doc); 
     return $.mobile; 
    }); 
} else { 
    // Browser globals 
    factory(root.jQuery, root, doc); 
} 
}(this, document, function (jQuery, window, document, undefined) { 

回答

0

對於什麼是值得我發現如何解決這方面的問題。問題在於與requirejs-rails gem捆綁在一起的r.js版本。當我將位於.bundler/ruby​​/2.0.0/requirejs-rails-e0932125e1d5/bin /中的v2.1.2 r.js與位於here的v2.1.10換出時,我不再收到「two many anonymous modules」錯誤,並且最終能夠構建優化的application.js文件。

這就是說,我最終遇到了更多有關requirejs-rails操作的問題。一看requirejs-rails Issues page,你可以看到這個項目有一些資源問題。我可能會放棄Requirejs用於我的Rails項目 - 有人還沒有找到一個與Rails 4資產管道合作的優雅解決方案。