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

升级tailwindcss-rails gem后生产环境编译资源出现SassC语法错误如何解决

报错信息如下:

bundle exec rails assets:precompile
rails aborted!
SassC::SyntaxError: Error: unterminated attribute selector for type
        on line 1009:16 of stdin
>> .prose ol[type="A" s] {

   ---------------^
/home/circleci/project/vendor/bundle/ruby/3.0.0/bundler/gems/sassc-ruby-4fce2b635ca5/lib/sassc/engine.rb:50:in `render'
/home/circleci/project/vendor/bundle/ruby/3.0.0/gems/sassc-rails-2.1.2/lib/sassc/rails/compressor.rb:29:in `call'
/home/circleci/project/vendor/bundle/ruby/3.0.0/gems/sprockets-4.0.2/lib/sprockets/sass_compressor.rb:30:in `call'
错误触发原因
  • 报错核心是新旧工具的语法兼容性问题:升级后的tailwindcss-rails内置的Tailwind CSS v3+ 版本,搭配的@tailwindcss/typography插件会生成包含CSS4新特性的属性选择器,报错行里type="A" s的s是CSS4新增的大小写不敏感匹配修饰符。
  • 项目中依赖的sassc/sassc-rails gem底层使用已经停止维护的旧版LibSass编译器,完全不支持这类新CSS语法,生产环境编译时触发Sass压缩流程就会识别失败,抛出语法错误。
排查解决方法

方案1:替换CSS编译工具(最推荐,长期兼容)

直接用维护活跃的dartsass-rails替换已经停止更新的sassc-rails:

  • 第一步:删除Gemfile中的gem 'sassc-rails',新增gem 'dartsass-rails'
  • 第二步:执行bundle install安装依赖
  • 第三步:修改config/environments/production.rb配置,把config.assets.css_compressor = :sass改为config.assets.css_compressor = :dartsass
  • 第四步:重新执行bundle exec rails assets:precompile验证即可

方案2:修改Tailwind配置关闭特性(无依赖改动,生效快)

如果暂时不想更换编译工具,可以直接配置Typography插件不生成该类语法:

  • 打开项目根目录的tailwind.config.js,调整插件配置:
module.exports = {
  // 原有其他配置保持不变
  plugins: [
    require('@tailwindcss/typography')({
      caseSensitive: false, // 新增该行,关闭大小写不敏感修饰符生成
    }),
  ]
}
  • 重新编译资源即可

方案3:降级tailwindcss-rails版本(临时应急方案)

如果上述方案都不适用,可以回退到不生成该新语法的旧版tailwindcss-rails,比如Gemfile中指定版本号锁在2.0以下,该方案仅适合临时救急,不推荐长期使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:57:02