Backbone.js requirejs rails AMD错误“;it中的两个多匿名模块”;
尝试使用requirejs rails(使用rails 4)预编译我的主干资源。我一直遇到需要js的路障,js抱怨说Backbone.js requirejs rails AMD错误“;it中的两个多匿名模块”;,backbone.js,ruby-on-rails-4,amd,requirejs-rails,Backbone.js,Ruby On Rails 4,Amd,Requirejs Rails,尝试使用requirejs rails(使用rails 4)预编译我的主干资源。我一直遇到需要js的路障,js抱怨说 Error: Error: application.js has two many anonymous modules in it. 这似乎是一个RequireJS错误。谷歌搜索结果,我不明白 我确实发现,问题在于任何库的头部都有AMD条件,如下面的示例所示。我想这与将自己注册为匿名模块有关。如果我删除这些条件,那么requirejs rails将不再抱怨,我可以编译优化的文件
Error: Error: application.js has two many anonymous modules in it.
这似乎是一个RequireJS错误。谷歌搜索结果,我不明白
我确实发现,问题在于任何库的头部都有AMD条件,如下面的示例所示。我想这与将自己注册为匿名模块有关。如果我删除这些条件,那么requirejs rails将不再抱怨,我可以编译优化的文件,然后在rails中运行
但是从我所有的外部库中手动删除这些AMD条件是不可持续的
有谁有更好的建议吗?我的requirejs.yml文件已正确设置
注意:我使用的是requirejs rails,因为主代码不适用于rails 4
顺便说一句:我可以使用相同的代码,而无需删除直接调用r.js(而不是requirejs Rails)的非Rails应用程序中的AMD位来优化代码。我不知道为什么requirejs rails的优化会在这个错误上出错,而r.js却没有。我以为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 ) {
值得一提的是,我发现了如何绕过这个特殊问题。问题在于与requirejs rails gem捆绑在一起的r.js版本。当我将位于.bundler/ruby/2.0.0/requirejs-rails-e093125e1d5/bin/中的v2.1.2r.js与位于v2.1.10的版本进行交换时,我不再收到“两个多匿名模块”错误,最终能够构建优化的application.js文件 尽管如此,我最终遇到了更多与requirejs rails操作相关的问题。一看这个项目,你就会发现这个项目存在一些资源问题。对于我的Rails项目,我可能会放弃Requirejs——有人还没有找到一个优雅的解决方案来使用Rails 4资产管道