Css 咕噜作响的手表发出了响声
我已经阅读了grunt、sass和compass文档,但找不到关于此错误的更多信息。我还看到另一个人有类似的错误,但这是由于他们的contrib.rb文件中存在语法问题,我认为我的contrib.rb文件中没有语法问题 问题:我运行grunt watch任务,并且在任何时候更改我的sass(*.scss)文件时都会出错。 错误内容如下: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
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'