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"
  }
}

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.


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']);


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


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.