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

从Rails 6.1移除Webpacker后出现Sprockets资源未预编译错误求助

问题修复方案

核心原因

Rails 6+ 携带--webpacker参数生成的项目会默认禁用Sprockets资产管道的部分默认配置,将静态资源处理全托管给Webpacker,移除Webpacker后需要补全原生资产管道的相关配置才能正常工作。

分步修复操作

  • 第一步:检查Gemfile依赖
    确认Gemfile中存在以下依赖且未被注释,执行bundle install确保安装生效:
    gem 'sprockets-rails'
    gem 'sass-rails'
    
  • 第二步:开启Sprockets加载
    打开config/application.rb,确认存在以下代码(如果被注释请取消注释):
    require "sprockets/railtie"
    
  • 第三步:补全资产预编译配置
    打开config/initializers/assets.rb,添加以下配置,指定需要预编译的入口文件:
    Rails.application.config.assets.precompile += %w( application.js application.css )
    
    注:Sprockets会自动识别.scss后缀文件并编译为.css,不需要在配置里指定scss后缀
  • 第四步:检查开发环境配置
    打开config/environments/development.rb,确认资产实时编译配置为开启状态:
    config.assets.compile = true
    
  • 第五步:检查入口文件指令
    确认app/assets/javascripts/application.js头部存在资源加载指令,示例:
    //= require rails-ujs
    //= require turbolinks
    //= require_tree .
    
    确认app/assets/stylesheets/application.scss头部存在资源加载指令(如果用Sprockets托管依赖),示例:
    /*
    *= require_tree .
    *= require_self
    */
    
  • 第六步:清理缓存重启服务
    执行以下命令清理旧资产缓存后重启Rails服务即可:
    rails tmp:cache:clear
    rails assets:clobber
    

内容的提问来源于stack exchange,提问作者devleo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:42:03