在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等页面,看看它是否在那里定义。 如果是这样,请将其删除。