You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6.1升级至7.1.3后Sprockets找不到jquery-1.7文件求助

Rails 7.1.3 升级后 Sprockets 找不到 jquery-1.7 的解决办法

问题背景

已上线的Rails 6.1项目升级至7.1.3版本,保留使用sprockets-rails维护原有asset pipeline。执行bundle exec rake assets:precompile时触发Sprockets::FileNotFound错误,提示找不到类型为application/javascript的'jquery-1.7'文件,错误定位到app/assets/javascripts/mercury.js第10行。因项目无法修改现有业务代码,需通过配置Sprockets修复资产编译流程。

错误日志

bundle exec rake assets:precompile

rake aborted!
Sprockets::FileNotFound: couldn't find file 'jquery-1.7' with type 'application/javascript' (Sprockets::FileNotFound)
Checked in these paths: 
  /Users/rabeyakhatunmuna/Documents/expertiger-app/app/assets/config
  ...(省略部分路径)
/Users/rabeyakhatunmuna/Documents/expertiger-app/app/assets/javascripts/mercury.js:10
Tasks: TOP => assets:precompile

现有配置

Gemfile

source 'https://rubygems.org'
git_source(:github) { |name| "https://github.com/#{name}.git" }
ruby '3.2.2'
gem 'pg', '~> 1.2', '>= 1.2.5'
gem 'rails', '7.1.3'
...(省略部分gem)
gem 'jquery-rails'
...(省略其他配置)

app/assets/javascripts/application.js.coffee

#= require common/rollbar
#= require jquery
#= require common/rollbar-jquery
#= require jquery_ujs
...(省略其他require)

app/assets/stylesheets/application.scss

/* ...
*= require jquery-ui/slider
*= require jquery-star-rating
*= require application/bootstrap_and_overrides
*/

解决步骤

1. 确保jquery-rails与Rails 7.1兼容

检查Gemfile中jquery-rails的版本,需使用适配Rails 7.x的版本(推荐>=4.4.0)。执行以下命令更新至兼容版本:

bundle update jquery-rails

2. 添加Sprockets别名映射

在config/initializers/assets.rb中添加别名,将jquery-1.7映射到jquery-rails提供的标准jquery文件,无需修改原代码中的依赖声明:

# 注册别名,让Sprockets识别jquery-1.7为jquery-rails提供的jquery
Sprockets.register_alias 'jquery-1.7', 'jquery'

# 确保jquery被加入预编译列表(若未添加)
Rails.application.config.assets.precompile += %w( jquery.js )

3. (可选)添加本地资产路径(若项目使用本地jquery文件)

如果项目原本将jquery-1.7存放在自定义目录(如app/assets/javascripts/vendor),需将该目录添加到Sprockets的资产搜索路径中:

# 在config/initializers/assets.rb中添加
Rails.application.config.assets.paths << Rails.root.join('app/assets/javascripts/vendor')

4. 清理缓存并重新编译

执行以下命令清理旧的资产编译缓存,再重新执行预编译:

bundle exec rake assets:clobber
bundle exec rake assets:precompile

内容的提问来源于stack exchange,提问作者Rabeya Khatun Muna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 17:01:16