0

尝试使用 requirejs-rails(使用 Rails 4)预编译我的 Backbone 资产。我一直遇到 require-js 抱怨的障碍

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

这似乎是一个 RequireJS 错误。谷歌搜索发现这个 Github issue,我不明白。

我确实发现问题出在任何以 AMD 条件为开头的库中,如下例所示。我想这与将自己注册为匿名模块有关。如果我删除这些条件,则 requirejs-rails 不再抱怨,我可以编译优化的文件,然后在 Rails 中工作。

但是从我所有的外部库中手动删除这些 AMD 条件是不可持续的。

有人有更好的建议吗?我的requirejs.yml文件设置正确。

注意:我使用的是 requirejs-rails 的这个分支,因为主要代码不适用于 Rails 4。

顺便说一句:我可以使用相同的代码,而无需删除非 Rails 应用程序中的 AMD 位,直接调用 r.js(而不是 requirejs-rails)来优化代码。我不确定为什么 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 ) {
4

1 回答 1

0

对于它的价值,我发现了如何解决这个特殊问题。问题在于与 requirejs-rails gem 捆绑在一起的 r.js 版本。当我将位于 .bundler/ruby/2.0.0/requirejs-rails-e0932125e1d5/bin/ 的 v2.1.2 r.js 换成位于此处的 v2.1.10 时,我不再收到“两个许多匿名模块”错误,并且最终能够构建优化的 application.js 文件。

话虽如此,我最终还是遇到了更多与 requirejs-rails 操作相关的问题。看一下requirejs-rails 问题页面,您会发现该项目存在一些资源问题。我可能会为我的 Rails 项目放弃 Requirejs - 有人还没有找到一个优雅的解决方案来使用 Rails 4 资产管道。

于 2014-01-29T23:30:36.757 回答