发出咕throw声“检测到递归process.nextTick”


88

我正在使用Node.js 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"
  }
}

Answers:


298

我终于发现了SASS遇到的类似问题。我在用

grunt.registerTask('sass', [ 'sass']);

诀窍是Grunt似乎不喜欢名称的重复。当我切换到

grunt.registerTask('styles', [ 'sass']);

一切都按预期进行。


58
+9000-这是一个愚蠢的错误,您的修复为我节省了时间以找出问题。谢谢!
jkat98 2014年

2
太棒了,谢谢您发现这个问题。我意识到我们无论如何都不需要注册一个任务,因为当您在命令行中键入grunt时,它将运行'grunt sass'。
stefan 2014年

感谢您发现这一点,也遇到了这个错误,它不是很有帮助。
凯文·霍尔迪奇

1
谢谢您回答这个问题……在过去的一个半小时里,我一直在脑子里ash着脑子,弄清楚为什么grunt-bower-concat插件给我这样的输出。
德里克2014年

谢谢你 真是气死我了!
Michael Giovanni Pumo 2014年


10

我只是修复了由命令引起的类似错误“ Recursive process.nextTick检测到”:grunt server

解决方案?使用sudo grunt服务


这永远不是解决方案。sudo不应该使用它,除非它确实在改变您的系统。听起来您做sudo npm install的通常很糟糕
Eddie Monge Jr 2015年


0

替代解决方案:检查手表中是否有空文件参数

这是我的摘录 gruntfile

watch: {
  all: {
    options:{
      livereload: true
    },
    files: ['src/scss/*.scss', 'src/foo.html',, 'src/bar.html'],
    tasks: ['default']
  }
}

就我而言,我可以根据需要使用上面的空参数重新创建原始海报的错误。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.