我在app/assets/javascripts下改了一个JS文件,还是一样。我删除了文件并重新创建,但内容仍然是旧的。这是我的 development.rb 文件:
App::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
config.serve_static_assets = false
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
# Do not compress assets
config.assets.compress = false
# Expands the lines which load the assets
config.assets.debug = true
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.default_url_options = { :host => "lvh.me:3000" }
# Raise exception on mass assignment protection for Active Record models
# config.active_record.mass_assignment_sanitizer = :strict
# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5
config.log_tags = [:uuid, :remote_ip]
end
JS 文件使用以下代码加载到标头标签内:
<script src="/assets/deals.js?body=1" type="text/javascript"></script>
这是在开发中加载 JS 的正常方式
尝试清除预编译资产:
bundle exec rake assets:clean
尝试删除tmp文件夹,然后重启服务器-rails s。 这样就可以了。
bundle exec rake assets:clean 然后 bundle exec rake assets:precompile
或删除
public/assets
文件夹,重启应用
sprockets-rails
宝石就我而言,我升级到 Rails 7,由于某种原因,javascript 文件没有更新。花了很多时间试图找出原因。
我终于发现了罪魁祸首——就我而言——不知何故,我已经移除了
sprockets-rails
宝石。我本可以很容易地浪费好几个月的时间来弄清楚这个问题。
我在运行 Rails 6 和 7 的应用程序中遇到了类似的问题。当我将
console.log
添加到其中一个 javascript 控制器时,浏览器控制台中不会有任何日志,看起来 console.log
甚至不存在.
我遇到问题已经有一段时间了,一直无法查明确切原因,这可能是由于全局安装的 bundler、rvm 和 asdf 之间的冲突、overmind、yarn 或 npm 的配置。但是我发现了解决这个问题的 3 个命令有一段时间了,我通常一个接一个地运行它们
rails assets:clobber
rake tmp:cache:clear
rake assets:precompile
另一个不太可能的原因是在开发中有以下配置:
config.cache_classes = true
虽然这不是设置的意图,但它可以阻止模块重新加载,从而阻止 js 包更新而无需重新启动 rails 服务器,因为它们都已被缓存