grugnito "Processo ricorsivo.nextTick rilevato"


88

Sto eseguendo Lion 10.9.2 con nodejs v0.10.26

Voglio impostare una compilazione automatizzata su file sass e una ricarica live con grugnito, niente di complicato ma ...

Durante l'esecuzione grunt watchottengo il seguente errore

(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

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

};

ed ecco il 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"
  }
}

Risposte:


298

Alla fine ho scoperto un problema simile che stavo avendo con SASS. Stavo usando

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

Il trucco era che a Grunt non piaceva la ripetizione dei nomi. Quando passo a

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

Tutto ha funzionato come dovrebbe.


58
+9000 - questo è uno stupido bug e la tua correzione mi ha fatto risparmiare tempo nel cercare di capirlo. Grazie!
jkat98

2
fantastico, grazie per aver notato questo. Mi sono reso conto che non abbiamo comunque bisogno di registrare una singola attività, perché grunt eseguirà 'grunt sass' quando lo digiti nella riga di comando.
stefan

Grazie per aver individuato questo, ci siamo anche imbattuti in questo e l'errore non è molto utile.
Kevin Holditch,

1
Grazie per aver risposto a questo ... Ho sbattuto la testa sulla scrivania nell'ultima ora e mezza per capire perché il grunt-bower-concatplugin mi dava quell'output.
Derek

Grazie per questo. Mi stava facendo impazzire!
Michael Giovanni Pumo

16

Ho appena avuto questo problema. Risolto rimuovendogrunt.registerTask('watch', [ 'watch']);


Ho avuto questo nome / problema esatto. Sheesh ...
Steve Meisner

1
Questo ha risolto per me, non la risposta accettata. Grazie a Dio c'è Stackoverflow e la tua risposta, non la
troverei

10

Ho appena corretto un errore simile "Rilevato processo ricorsivo.nextTick" causato dal comando: grunt server

La soluzione? Usa invece sudo grunt serve


questa non dovrebbe mai essere la soluzione. sudonon dovrebbe essere usato a meno che non sia qualcosa che sta effettivamente cambiando il tuo sistema. Sembra che tu l'abbia fatto, il sudo npm installche spesso è brutto
Eddie Monge Jr


0

Soluzione alternativa: controlla il tuo orologio per un argomento di file vuoto .

Ecco un estratto del mio gruntfile

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

Nel mio caso, potrei ricreare l'errore del poster originale su richiesta con l'argomento vuoto sopra.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.