2014-01-28 31 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资产管道合作的优雅解决方案。