简体   繁体   English

Javascript资产未加载到已部署的Heroku应用(生产)中,但在本地运行良好

[英]Javascript assets not loading to deployed Heroku app(Production), but works fine locally

I have been fighting with this issue for the past two days now and have gotten nowhere, unfortunately. 过去两天来,我一直在与这个问题作斗争,但不幸的是,它没有任何进展。 I know this is a regularly asked question but none of the answers I have encountered have helped. 我知道这是一个经常被问到的问题,但是我所遇到的答案都没有帮助。

Below shows my assets in Chrome when the application is run locally. 下面显示了在本地运行该应用程序时我在Chrome中的资产。

Assets in Chrome(local) Chrome中的资产(本地)

Below are assets in Chrome Production 以下是Chrome制作中的资产

Assets in Chrome(production) Chrome中的资产(生产)

What I have tried 我尝试过的

I have tried doing config.assets.compile = true 我尝试做config.assets.compile = true

I tried reorganizing my application.js file 我尝试重组我的application.js文件

also RAILS_ENV=production bin/rails assets:precompile and then deployed to production. RAILS_ENV=production bin/rails assets:precompile ,然后部署到生产中。

I honestly wish I could remember all the steps i have tried but the ones above are the most reoccurring. 老实说,我希望我能记住我尝试过的所有步骤,但是以上步骤是最经常发生的。

Code

gemfile 的Gemfile

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.6'
# Use postgresql as the database for Active Record
gem 'pg', '~> 0.18'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
gem 'jquery-ui-rails'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
gem 'rubocop', require: false


group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

group :development, :test do
  gem 'rspec-rails', '~> 3.5'
  gem "factory_bot_rails"
  gem 'database_cleaner'
end


group :production do
  gem 'mini_racer'
end

gem 'devise'
gem 'bootstrap', '4.0.0.alpha6'

gem "awesome_print", require:"ap"
gem 'simple_form'
gem 'jquery-ui-rails'
gem 'gon'
gem 'sprockets', '~>3.7.2'
gem 'rails-assets-tether', '>= 1.1.0'

application.js 的application.js

//
//= require jquery
//= require "tether"
//= require jquery-ui
//= require bootstrap
//= require_tree .
//= require bootstrap-sprockets

application.rb application.rb中

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module Chessapp
  class Application < Rails::Application
    config.serve_static_assets = true
    config.assets.compile = true
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.
  end
end

production.rb production.rb

Rails.application.configure do
  #config.action_mailer.default_url_options = { host: 'chesschessrevolution.herokuapp.com' }

  # Code is not reloaded between requests.
  config.cache_classes = true

  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both threaded web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true

  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.serve_static_assets = true
  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = Uglifier.new(harmony: true)
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = true

  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = 'http://assets.example.com'

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

  # Mount Action Cable outside main process or domain
  # config.action_cable.mount_path = nil
  # config.action_cable.url = 'wss://example.com/cable'
  # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  # config.force_ssl = true

  # Use the lowest log level to ensure availability of diagnostic information
  # when problems arise.
  config.log_level = :debug

  # Prepend all log lines with the following tags.
  config.log_tags = [ :request_id ]

  # Use a different cache store in production.
  # config.cache_store = :mem_cache_store

  # Use a real queuing backend for Active Job (and separate queues per environment)
  # config.active_job.queue_adapter     = :resque
  # config.active_job.queue_name_prefix = "chessapp_#{Rails.env}"
  config.action_mailer.perform_caching = false

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation cannot be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Use a different logger for distributed setups.
  # require 'syslog/logger'
  # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')

  config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

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

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false
end

application.html.erb application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>Chessapp</title>
    <%= csrf_meta_tags %>
    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': true %>
    <link href="https://fonts.googleapis.com/css?family=Audiowide" rel="stylesheet">
  </head>
  <body>
    <%= render 'shared/nav' %>
    <div>
        <% flash.each do |key, value| %>
    <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>
        <class="notice"><%= notice %></p>
        <class="alert"><%= alert %></p>

        <%= yield %>

    </div>
  </body>
</html>

Any help on this would be greatly appreciated. 任何帮助,将不胜感激。 If the information I provided isn't sufficient please feel free to check out the repository @ github . 如果我提供的信息不够,请随时查看存储库@ github

Assets are loading, the reason why you are not able to see them individually(separate files) in production is because rails precompiles(minimizes) all the assets and puts into a single file. 资产正在加载中,之所以无法在生产中单独查看它们(单独的文件),是因为Rails会预编译(最小化)所有资产并将其放入单个文件中。

So if you have look at your application.css and application.js which is getting rendered in production you can see that it contains bootstrap, jquery, jquery-ui etc which you've required in application.js 因此,如果您查看在生产环境中呈现的application.css和application.js,您会发现它包含在application.js中需要的bootstrap,jquery,jquery-ui等

I had a look at your application.css and application.js and it contained all the assets you've required. 我查看了您的application.cssapplication.js ,其中包含您需要的所有资产。 They are not available anymore probably because you have done re-deployment. 它们不再可用,可能是因为您已经完成了重新部署。

You can learn more about asset pipeline here 您可以在此处了解有关资产管道的更多信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JavaScript未在Heroku上加载,但可在本地使用 - JavaScript not loading on Heroku but works locally Rails应用程序在本地运行,但在部署到Heroku时则不行 - Rails app works locally but not when deployed to Heroku Rails App可在本地运行,但在Heroku上部署时无法运行 - Rails App works locally but not when deployed on Heroku Rails 应用程序在本地工作,但不适用于 Heroku 的生产环境 - Rails App works locally, but not in production with Heroku 在heroku上部署Rails应用程序时遇到问题(该应用程序在本地运行良好)? - Having issues with deploying Rails app on heroku( app works fine locally)? Rails在本地工作正常,但在heroku中没有 - Rails works fine locally but not in heroku 控制器可以在本地正常运行,但不能在heroku上运行 - Controller works fine locally but not on heroku Rails应用程序在本地运行良好,但heroku给出“应用程序错误” - Rails app works fine locally but heroku gives “application error” Rails App可在本地运行,但在Heroku上生产时出现错误 - Rails App works locally but giving an error on production on Heroku Rails 4 - javascript文件未在生产中加载但在本地运行良好。 (Heroku的) - Rails 4 - javascript files not loading in production but working well locally. (Heroku)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM