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

Ubuntu 22.04运行compass watch报错:undefined method `exists?' for File:Class

解决Compass 1.0.3在Ruby 3.2.1下的undefined method 'exists?' for File:Class报错

问题根源

Ruby 3.0及以上版本移除了File.exists?方法,替换为File.exist?(注意末尾无s)。你使用的Compass 1.0.3是2014年的旧版本,代码中仍在调用已被移除的方法,因此在Ruby 3.x环境下触发报错。之前Ubuntu 18.04能正常运行,是因为当时默认Ruby版本低于3.0,兼容该旧方法。

解决方案

方案一:降级Ruby版本到2.7.x(最稳定省心)

  • 用asdf安装Ruby 2.7.x版本:asdf install ruby 2.7.8
  • 切换到项目目录,设置本地Ruby版本:asdf local ruby 2.7.8
  • 重新安装依赖(确保gem适配):gem install sass compass

方案二:修改Compass源码(不降级Ruby,临时救急)

直接修改报错文件中的代码,替换已废弃的方法:

  1. 打开报错路径的文件:$HOME/.asdf/installs/ruby/3.2.1/lib/ruby/gems/3.2.0/gems/compass-1.0.3/lib/compass/configuration/helpers.rb
  2. 定位到第89行,把File.exists?替换为File.exist?
  3. 保存文件后重新运行compass watch

注意:修改源码的方式是临时方案,后续重新安装Compass会失效,仅适合短时间应急。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:54:58