Rails 6部署Heroku报Sprockets::FileNotFound找不到jquery-ui scss如何解决
错误原因
部署时Sprockets扫描资产路径找不到jquery-ui对应的样式文件,核心问题有两个:
- 你当前
package.json仅安装了jquery依赖,未安装jquery-ui相关包 - 如果你通过npm安装前端包,默认存放在
node_modules目录,不在Sprockets默认的资产搜索路径范围内
修复方案
方案1:使用Rails生态专用的jquery-ui-rails gem(推荐,适配资产管道无需额外配置)
- 第一步:在项目
Gemfile中添加依赖
gem 'jquery-ui-rails'
- 第二步:执行安装命令
bundle install
- 第三步:如果你需要用到jquery-ui的交互脚本,还需要在
app/assets/javascripts/application.js中添加引用(仅用到样式可以跳过)
//= require jquery-ui
修改完成后本地先执行rails assets:precompile验证无报错,再推送至Heroku即可。
方案2:使用npm包实现
- 第一步:安装打包好的jquery-ui发行版
yarn add jquery-ui-dist
- 第二步:给Sprockets添加node_modules搜索路径,在
config/initializers/assets.rb末尾添加如下配置
Rails.application.config.assets.paths << Rails.root.join('node_modules')
- 第三步:修改
app/assets/stylesheets/application.scss中的引用语句,替换原有*= require jquery-ui为
*= require jquery-ui-dist/jquery-ui
如果需要用到js功能,在app/assets/javascripts/application.js中添加
//= require jquery-ui-dist/jquery-ui
同样本地执行rails assets:precompile验证通过后再部署即可。
内容的提问来源于stack exchange,提问作者user984621
相关产品推荐
相关产品推荐

