grunt throw“Recursive process.nextTick detected”

时间:2014-03-09 18:05:08

标签: node.js gruntjs grunt-contrib-watch

我使用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"
  }
}

6 个答案:

答案 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