Css 咕噜作响的手表发出了响声

Css 咕噜作响的手表发出了响声,css,sass,gruntjs,compass-sass,Css,Sass,Gruntjs,Compass Sass,我已经阅读了grunt、sass和compass文档,但找不到关于此错误的更多信息。我还看到另一个人有类似的错误,但这是由于他们的contrib.rb文件中存在语法问题,我认为我的contrib.rb文件中没有语法问题 问题:我运行grunt watch任务,并且在任何时候更改我的sass(*.scss)文件时都会出错。 错误内容如下: NoMethodError on line 264 of /Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/comp

我已经阅读了grunt、sass和compass文档,但找不到关于此错误的更多信息。我还看到另一个人有类似的错误,但这是由于他们的contrib.rb文件中存在语法问题,我认为我的contrib.rb文件中没有语法问题

问题:我运行grunt watch任务,并且在任何时候更改我的sass(*.scss)文件时都会出错。 错误内容如下:

NoMethodError on line 264 of /Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/configuration/inheritance.rb: _
Run with --trace to see the full backtrace
因此,我的所有sass文件都没有处理到我的css文件夹中。我是grunt的新手,我对自己所做的大量初始设置有点不知所措。我希望得到任何关于我的文件如何被错误配置的建议,或者compass或sass的其中一个版本是否与grunt相关(都是最新的非测试版)有错误的建议

以下是我的contrib.rb文件的文本:

require "susy"
css_dir = _/css
sass_dir = _/components/sass
javascripts_dir = _/js 
output_style = :compressed
My Grunfile.js:

module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.initConfig({
  uglify: {
    my_target: {
        files: {
            '_/js/script.js': ['_/components/js/*.js'] //tells grunt to track and compress any .js file found in components/js folder   
        } //files
      } // my_target
    }, // uglify
  compass: {
    dev: {
        options: {
            config: 'config.rb',
        force: true // <-- ???
        } //options
    } //dev
  }, //compass
  watch: {
    options: { livereload: true },
    scripts: {
        files: ['_/components/js/*.js'],
        tasks: ['uglify']
    }, //scripts
    sass: {
        files: ['_/components/sass/*.scss'],
        tasks: ['compass:dev']
    }, //sass
    html: {
      files: ['*.html']
    }
   } // watch
  })// initConfig
 grunt.registerTask('default', 'watch'); //makes 'grunt' command automaticaly execute the watch command to monitor JS files
} //exports

事情是这样的,在使用compass和Grunt时,我从来没有使用过contrib.rb文件。我知道你可以,如果你能成功,那就太好了。但另一种选择是只在grunt配置中指定路径。当然,这一切都假设您能够实际编译sass文件。在谷歌搜索该错误时,似乎大部分时间是contrib.rb文件的问题导致了该问题

这么说,也许你可以不使用
contrib.rb
文件,只使用Grunt

compass: {
  dev: {
    options: {
      sassDir: "_/components/sass",
      specify: "_/components/sass/**/*.scss", // might not be necessary for you
      cssDir: "_/css",
      javascriptsPath: "_/js",
      outputStyle: "compressed",
      require: "susy"
    }
  }
}

不确定您是否能够解决此问题,但我收到了相同的错误

我必须在目录前加上一个正斜杠才能让Grunt找到正确的路径。在我的项目中使用Grunt和Compass时,我使用了类似的步骤,而且我在我的PC上,所以我只将路径用单引号引起来。根据项目目录的结构,config.rb文件中的两行分别如下所示:

css_dir = '/_/css'
sass_dir = '/_/components/sass'
同样在您的问题中,我注意到您声明它是“contrib.rb”文件,但在您的文件目录中,它被命名为config.rb。您在gruntfile.js文件中也将其引用为config.rb,但我只是想确保项目根目录中的这个文件名为“config.rb”


我知道这是一个很大的设置,所以我希望这对你有用。

你能直接运行
grunt compass
吗,或者你会遇到同样的错误?我猜问题根本不在于
监视
任务。我在运行grunt compass时产生了相同的错误,但仍然没有成功地将css文件链接到scss文件。嗯。。。您可以直接从命令行运行
compass
?我不确定你到底需要什么样的论据。但是如果它也不运行,那么Grunt可能根本就没有问题。我可以从命令行运行compass watch任务,没有错误消息,但是当我切换到我的项目目录(上面显示的根文件夹为sass_first_proj)时,我会再次生成NoMethodError。我不是在谈论Grunt任务,我问你是否可以在Grunt之外从命令行运行compass本身。我们需要将问题与指南针或手表任务隔离开来。但是有这样一个错误,我猜这是一个指南针问题。尝试一下,在查看github上的gruntfile.js之后,我又提出了一些想法,但仍然不走运。我真的很感激所有的帮助,但我认为我最好的办法是把一切都搞砸,重新开始。如果我有什么解决办法,我会把它们贴在这里。再次感谢!啊。。。那太糟糕了。如果你能找到解决方案,请随意在这里发帖,也许我们可以看到新旧并存的情况,看看有什么变化。祝你好运
css_dir = '/_/css'
sass_dir = '/_/components/sass'