grunhido lançar “Recursive process.nextTick detectado”

88

Estou executando o Lion 10.9.2 com nodejs v0.10.26

Eu quero configurar uma compilação automatizada em arquivos sass e uma recarga ao vivo com grunt, nada complicado, mas ...

Ao executar grunt watch, recebo o seguinte erro

(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

aqui está o 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' ]);

};

e aqui está o 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"
  }
}
denisjacquemin
fonte

Respostas:

298

Finalmente descobri um problema semelhante que estava tendo com o SASS. Eu estava usando

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

O truque era que Grunt não parecia gostar da repetição de nomes. Quando eu mudo para

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

Tudo funcionou como deveria.

Bob Rockefeller
fonte
58
+9000 - este é um bug estúpido e sua correção me economizou tempo tentando descobrir. Obrigado!
jkat98
2
incrível, obrigado por perceber isso. Percebi que não precisamos registrar uma única tarefa de qualquer maneira, porque grunt executará 'grunt sass' quando você digitar isso na linha de comando.
stefan,
Obrigado por perceber isso, também encontrei isso e o erro não é muito útil.
Kevin Holditch
1
Obrigado por responder isso ... Estou batendo a cabeça na mesa há uma hora e meia tentando descobrir por que o grunt-bower-concatplugin estava me dando essa saída.
Derek
Obrigado por isso. Isso estava me deixando louco!
Michael Giovanni Pumo
16

Só tive esse problema. Resolvido removendogrunt.registerTask('watch', [ 'watch']);

Abraham Parangi
fonte
Eu tive esse nome / problema exato. Nossa…
Steve Meisner,
1
Isso resolveu para mim, não a resposta aceita. Graças a Deus há Stackoverflow e sua resposta, eu não encontraria isso em um milhão de anos: D
Marko Grešak
10

Acabei de corrigir um erro semelhante "Recursive process.nextTick detectado" causado por comando: grunt server

A solução? Use sudo grunt servir ao invés

krazyweb
fonte
esta nunca deve ser a solução. sudonão deve ser usado a menos que seja algo que realmente esteja mudando seu sistema. Parece que você fez, o sudo npm installque geralmente é ruim
Eddie Monge Jr
0

Solução alternativa: verifique em seu relógio se há um argumento de arquivo vazio .

Aqui está um trecho do meu gruntfile

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

No meu caso, eu poderia recriar o erro do pôster original sob demanda com o argumento vazio acima.

Brian Muenzenmeyer
fonte