Rails 5: JS 文件未在生产环境中加载

Rails 5: JS files not loading in Production

我正在使用 Rails 5 和 Ruby 2.5,并部署到 Amazon Elastic Beanstalk。

所有样式表和 CSS 文件都在生产中正确加载,但是 Javascript 文件在生产中未正确加载。一切都在开发中完美运行。

我认为问题是在生产环境中,我只看到一个 .js 文件,其中挤满了很多 javascript 文件,导致无法正确加载。

这是它在本地主机上的样子:

这是它在生产服务器上的样子:

当我搜索生产 .js 文件时,我遗漏了很多在本地主机上加载的单独 JS 文件中的代码。

我已经尝试 运行 RAILS_ENV=production bundle exec rake assets:clean assets:precompile 并且我可以在 /public/assets 文件夹中看到我的所有资产。

我的 production.rb 文件:

Rails.application.configure do
    config.cache_classes = true
    config.eager_load = true
    config.consider_all_requests_local       = false
    config.action_controller.perform_caching = true
    config.read_encrypted_secrets = true
    config.public_file_server.enabled = true
    config.assets.js_compressor = :uglifier
    config.assets.compile = false
    config.log_level = :debug
    config.log_tags = [ :request_id ]
    config.action_mailer.perform_caching = false
    config.i18n.fallbacks = true
    config.active_support.deprecation = :notify
    config.log_formatter = ::Logger::Formatter.new

    if ENV["RAILS_LOG_TO_STDOUT"].present?
        logger           = ActiveSupport::Logger.new(STDOUT)
        logger.formatter = config.log_formatter
        config.logger    = ActiveSupport::TaggedLogging.new(logger)
    end

    config.active_record.dump_schema_after_migration = false
    config.action_mailer.perform_deliveries = true
    config.action_mailer.raise_delivery_errors = true

    config.assets.digest = true
    Rails.application.config.assets.precompile += %w( *.js ^[^_]*.css *.css.erb )

end

我的 application.js 文件:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require editable/bootstrap-editable
//= require editable/bootstrap2-editable
//= require editable/rails
//= require_tree .

editable gem 是 x-editable 并且用于就地编辑。

更新

这是在 application.html.erb 文件中加载样式表和 javascript 的方式:

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

尝试config.assets.compile falsetrue然后会像下面这样

config.assets.compile = true

希望有用

我是通过手动下载Development中源代码中出现的每个JS文件,然后将它们上传到服务器,并在代码中手动将它们一个一个地导入来解决的,如locahost截图所示!