我使用nodejs v0.10.26运行Lion 10.9.2
我想在sass文件上设置一个自动编译,并使用grunt进行实时重新加载,没有什么复杂但是...
运行grunt watch
时出现以下错误
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
util.js:35
var str = String(f).replace(formatRegExp, function(x) {
^
RangeError: Maximum call stack size exceeded
这是Gruntfile.js
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dist: {
files: {
'assets/css/styles.css': 'assets/sass/styles.scss'
}
}
},
watch: {
all: {
files: 'index.html', // Change this if you are not watching index.html
options: {
livereload: true // Set livereload to trigger a reload upon change
}
},
css: {
files: [ 'assets/sass/**/*.scss' ],
tasks: [ 'sass' ],
options: {
spawn: false
}
},
options: {
livereload: true // Set livereload to trigger a reload upon change
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.registerTask('watch', [ 'watch']);
grunt.registerTask('default', [ 'sass', 'watch' ]);
};
,这是package.json
{
"name": "application",
"version": "0.0.1",
"private": true,
"devDependencies": {
"grunt": "~0.4.2",
"grunt-contrib-watch": "~0.5.3",
"grunt-contrib-sass": "~0.7.3"
}
}
答案 0 :(得分:298)
我终于找到了与SASS类似的问题。我正在使用
grunt.registerTask('sass', [ 'sass']);
诀窍在于,Grunt似乎并不喜欢名字中的重复。当我切换到
grunt.registerTask('styles', [ 'sass']);
一切都按原样运作。
答案 1 :(得分:16)
刚出现这个问题。通过删除grunt.registerTask('watch', [ 'watch']);
答案 2 :(得分:10)
我刚刚修正了一个类似的错误"递归过程。下一个检测到"由命令引起:grunt服务器
解决方案?请改用sudo grunt服务
答案 3 :(得分:1)
你可以尝试这个,它解决了我的问题,使用Yeoman 1.3.3和Ubuntu 14.04 Grunt watch error - Waiting...Fatal error: watch ENOSPC
答案 4 :(得分:0)
替代解决方案:检查您的监视是否存在空文件参数。
这是我的gruntfile
watch: {
all: {
options:{
livereload: true
},
files: ['src/scss/*.scss', 'src/foo.html',, 'src/bar.html'],
tasks: ['default']
}
}
在我的情况下,我可以使用上面的空参数重新创建原始海报的错误。
答案 5 :(得分:0)
即使尝试安装grunt,我也遇到了错误。运行npm重复数据删除解决了我的问题,如下所示:Grunt watch error - Waiting...Fatal error: watch ENOSPC