我正在挣扎。Rails 5 - JS在生产环境中不工作(仅)
我有我的应用程序/ assets/javascripts文件夹中的一系列js文件的rails 5应用程序。这些文件中的js在开发环境中工作得很好,但是当我在heroku上发布时,它停止工作。
我可以从Chrome检查器看到,从网络选项卡中可见的application.js文件显示了我应用程序中js文件的内容。这只是在生产中似乎没有做任何事情。没有控制台错误出现在Chrome控制台中。
我可以从this post看到有一系列的事情可以尝试。我已经尝试了所有这些。我甚至创建了一个全新的应用程序,并一次添加了js文件,以查看是否存在需要以其他顺序执行某些操作(主要是猜测)的临界点 - 但这无法解决问题。
我可以看到this article一个建议是:
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
,然后尝试:
rake assets:clean assets:precompile
我尝试每一种建议,而仍然无法发现问题。
如果我写js的方式有错误,我希望能够在我的开发和生产环境控制台检查器中使用chrome。在任一环境中都不会显示错误。
如果生产环境读取js文件时出现问题,我很困惑为什么我可以在文件中搜索js文件中使用的单词,我可以从网络选项卡打开并查看正确的文本。
我该如何解决这个问题?
我的相关文件有:
应用程序/资产/ Java脚本/ application.js中
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require jquery-fileupload/vendor/jquery.ui.widget
//= require jquery-fileupload/jquery.iframe-transport
//= require jquery-fileupload/jquery.fileupload
//= require bootstrap-sprockets
//= require moment
//= require bootstrap-datetimepicker
//= require pickers
// require underscore
// require gmaps/google
//= require markerclusterer
//= require cocoon
//= require cable
//= require_tree .
配置/初始化/ assets.rb
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w(search.js)
配置/ production.rb
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
在生产环境中不工作的相关文件保存在app/assets/javscripts/stance/commercial.js中(因此它应该在application.js中由// = require_tree标识。
这个文件有:
jQuery(document).ready(function() {
jQuery('[name="organisation[commercial_attributes][standard_financial_split]"]').on('click', function() {
if (jQuery(this).val() == 'true') {
jQuery('#commercial_standard_financial_split_content').removeClass('hidden');
} else {
jQuery('#commercial_standard_financial_split_content').removeClass('hidden').addClass('hidden');
}
});
});
任何人都可以用用于获取JS在生产环境中使用的过程中提供帮助?
我没有建议尝试的东西,这不是教程,代码学校(我是代码学校的学生,走轨道,udemy和有一百万本书)的东西,但可以找不到解决这个问题的参考点。
你有没有探究过?这个问题已经在这个网站上回答了很多。另外,这里是关于这个问题的Heroku文档:https://devcenter.heroku.com/articles/rails-4-asset-pipeline。我一直只包括12个因素宝石。 – steel
嗨@steel。是的 - 我一直在努力多年。我尝试了我链接的SO帖子中列出的所有内容,以及我链接的博客文章中的所有内容。 Heroku的文档讲到rails 3和4.我正在使用Rails 5.我没有运行特定的预编译命令,因为我可以从Rails配置文件(assets.rb)看到这是我的文件结构配置的一部分。我还可以从我的控制台日志中看到,当我推送到heroku时,资产正在预编译:为Rails资产管道准备应用程序 remote:运行:rake资产:预编译 remote:资产预编译完成(3.51s) – Mel
谢谢也用于参考12因素宝石。我在使用rails 4时试图解决这个问题 - 但它不再是rails 5的一部分。 – Mel