在Heroku的Rails应用程序中包含两次jQuery

我的问题类似于其他一些问题,但仍然没有为我的情况提供答案

我在Gemfile中的应用程序中包含了jQuery gem:

gem 'jquery-rails' 

在application.js中:

 //= require jquery //= require jquery-ui //= require jquery_ujs ... //= require_tree . 

我的development.rb有

 # Do not compress assets config.assets.compress = false # Expands the lines which load the assets config.assets.debug = true 

我的资产没有预先编译,没有公共/资产。 一切都在当地运行良好。 但是当我推送到heroku时,我会在页面上包含不同的application.js文件。 它不是一个清单文件,而是缩小了jQuery的版本。 因此我将jQuery包含两次。 以下是我的网页源代码:

    ...  

当我点击/assets/application.js?body=1我看到了缩小的jQuery。 当我在本地运行我的应用程序并单击/assets/application.js?body=1我只看到清单。 我试图添加到development.rb

  config.serve_static_assets = false 

它没有帮助。 我还清理了多次资产和缓存。 唯一对我有用的是设定

 config.assets.debug = false 

但我想知道是否有任何其他选项不会影响调试。

我删除了这一行

 //= require_tree . 

并在javascripts中创建一个子文件夹,然后将javascript目录中的所有js文件移动到该子文件夹, application.js除外

并写了这一行

 //= require_tree ./sub_folder_name 

这很棒,很有效。

需要注意的一件重要事项:

这可能会导致您,因为您通过javascript_include_tag手动包含两个相同的文件,并且app.js包含其他文件。 首先确认如果是这种情况,您必须包含一次。

看一下关于预编译资产的heroku上的这篇文章 。 当您推送到heroku时,您会看到该部分附带的任何错误消息:

 -----> Preparing Rails asset pipeline Running: rake assets:precompile 

开发和生产应该是不同的(/ app /资产,而不是在开发,公共/资产和生产中缩小的缩小。

至于双重包含,如果您的生产网络服务页面同时包含两者,我会检查您的应用程序以查找application.html.erb等页面,看看它是否在那里定义。 如果是这样,请将其删除。