ruby - Sass::Util:Module 的未定义方法 `has?' (NoMethodError) - Debian 上使用 Ruby、Sass、Compass 时出错

标签 ruby linux sass compass nomethoderror

我搜索了以下问题的解决方案,但找不到任何内容。所以我希望你能帮助我。谢谢。

我有:

  • Debian Stretch(发行版:Debian GNU/Linux 9.7,内核:Linux 4.9.0-8-amd64 (x86_64));
  • Apache NetBeans 10(孵化中) - 从 https://snapcraft.io/netbeans 安装的 snap ;
  • PHP 7.1


我安装了(通过 this 页面激励自己:

  • Ruby(使用:sudo apt install ruby​​-full);
  • Sass(使用sudo gem install sass);
  • compass (使用sudo gem install compass);

并检查了他们的版本:

# ruby --version
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]

# sass --version
Ruby Sass 3.7.3

# compass --version
Compass 1.0.3 (Polaris)
Copyright (c) 2008-2019 Chris Eppstein

请注意,我对 Ruby 没有任何经验。


我有以下 NetBeans 设置:

*) 在选项卡“工具 > 选项 > HTML/JS > CSS 预处理器” 中:

Sass Path: /usr/local/bin/sass

我也尝试过:

Sass Path: /usr/local/bin/scss

*) 在选项卡“文件 > 项目属性 > CSS 预处理器 > Sass” 中:

Input: /web/src/Application/assets/scss
Output: /web/public/assets/css
Compiler Options: --compass -E "UTF-8" --trace --no-cache


回溯:

当我尝试编译 .scss 文件(为了创建相应的 .css 文件)时,我收到了每个文件的错误。这是第一个 .scss 文件的回溯:

"/usr/local/bin/sass" "--cache-location" "/home/<my-username>/snap/netbeans/common/cache/10.0/sass-compiler" "--sourcemap=none" "--compass" "-E" "UTF-8" "--trace" "--no-cache" "<my-path-to-project-root>/web/src/Application/assets/scss/fonts.scss" "<my-path-to-project-root>/web/public/assets/css/fonts.css"
/var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core/sass_extensions/functions/urls.rb:5:in `has?': undefined method `has?' for Sass::Util:Module (NoMethodError)
Did you mean?  hash
               Hash
    from /var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core/sass_extensions/functions/urls.rb:9:in `included'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/lib/sass/script/functions.rb:627:in `include'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/lib/sass/script/functions.rb:627:in `include'
    from /var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core/sass_extensions/functions.rb:23:in `<module:Functions>'
    from /var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core/sass_extensions/functions.rb:19:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core/sass_extensions.rb:9:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core.rb:68:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /var/lib/gems/2.3.0/gems/compass-1.0.3/lib/compass.rb:14:in `block in <top (required)>'
    from /var/lib/gems/2.3.0/gems/compass-1.0.3/lib/compass.rb:13:in `each'
    from /var/lib/gems/2.3.0/gems/compass-1.0.3/lib/compass.rb:13:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in `rescue in require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/lib/sass/exec/sass_scss.rb:238:in `load_compass'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/lib/sass/exec/sass_scss.rb:49:in `process_result'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/lib/sass/exec/base.rb:50:in `parse'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/lib/sass/exec/base.rb:18:in `parse!'
    from /var/lib/gems/2.3.0/gems/sass-3.7.3/bin/sass:13:in `<top (required)>'
    from /usr/local/bin/sass:22:in `load'
    from /usr/local/bin/sass:22:in `<main>'
Done.


urls.rb文件:

这是回溯中指定的文件的开始内容(/var/lib/gems/2.3.0/gems/compass-core-1.0.3/lib/compass/core/sass_extensions/functions/urls.rb):

module Compass::Core::SassExtensions::Functions::Urls


  def self.has?(base, instance_method)
    Sass::Util.has?(:instance_method, base, instance_method)
  end

  def self.included(base)
    base.send(:include, StylesheetUrl) unless has?(base, :stylesheet_url)
    base.send(:include, FontUrl) unless has?(base, :font_url)
    base.send(:include, ImageUrl) unless has?(base, :image_url)
    base.send(:include, GeneratedImageUrl) unless has?(base, :generated_image_url)
  end

最佳答案

发现此搜索相同的错误消息。我可以通过将本地的 sass 版本从 sass-3.7.4 切换到 sass-3.4.25 (Selective Steve) 来解决该问题。

此错误消息的另一个可能的修复。

关于ruby - Sass::Util:Module 的未定义方法 `has?' (NoMethodError) - Debian 上使用 Ruby、Sass、Compass 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599435/

相关文章:

Ruby 系统 ('ls' ) 到字符串?

ruby - 为什么 Ruby 精化只修改类,而不修改模块?

linux - 为什么在 python3 中导入 pyspark 需要我的 linux 机器上的 super 用户访问权限?

html - 只有当 Sass 文件中除了注释之外还有其他内容时,我该如何 @import?

ruby - 在一个进程多个数据库连接 sinatra 应用程序中使用什么 ORM?

ruby-on-rails - 在 Rails 3 路由中重命名路径助手

java - 不同的java线程访问同一个变量

linux - 实时记录过程输出到文件

css - SASS中补码和反转的区别?

css - SASS 错误 : Incompatible units: 'px' and 'px*px'