grunt throw "Yinelemeli işlem.nextTick algılandı"


89

Lion 10.9.2'yi nodejs v0.10.26 ile çalıştırıyorum

Sass dosyalarında otomatik bir derleme ve grunt ile canlı bir yeniden yükleme kurmak istiyorum, karmaşık bir şey değil ama ...

Çalıştırırken grunt watchaşağıdaki hatayı alıyorum

(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

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

};

ve işte 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"
  }
}

Yanıtlar:


299

Sonunda SASS ile yaşadığım benzer bir sorunu çözdüm. Kullanıyordum

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

İşin püf noktası, Grunt'un isimlerdeki tekrardan hoşlanmamasıydı. Geçiş yaptığımda

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

Her şey olması gerektiği gibi çalıştı.


58
+9000 - bu aptalca bir hata ve senin düzeltmen anlamaya çalışırken bana zaman kazandırdı. Teşekkürler!
jkat98

2
harika, bunu fark ettiğiniz için teşekkürler. Zaten tek bir görev kaydetmemize gerek olmadığını anladım, çünkü komut satırına grunt 'grunt sass' çalıştıracak.
stefan

Bunu tespit ettiğiniz için teşekkürler, bununla da karşılaştım ve hata pek yardımcı olmadı.
Kevin Holditch

1
Bunu cevapladığınız için teşekkür ederim ... Son bir buçuk saattir kafamı masaya vurup grunt-bower-concateklentinin bana bu çıktıyı neden verdiğini anlamaya çalışıyorum .
Derek

Bunun için teşekkürler. Beni deli ediyordu!
Michael Giovanni Pumo

17

Sadece bu sorunu yaşadım. Kaldırarak çözdügrunt.registerTask('watch', [ 'watch']);


Bu tam isme / konuya sahiptim. Sheesh…
Steve Meisner

1
Bu benim için çözdü, kabul edilen cevap değil. Tanrıya şükür Stackoverflow ve cevabınız var, bunu bir milyon yıl içinde
bulamazdım

11

"Yinelemeli process.nextTick algılandı" komutunun neden olduğu benzer bir hatayı düzelttim: grunt server

Çözüm? Bunun yerine sudo grunt hizmetini kullanın


bu asla çözüm olmamalı. sudoSisteminizi gerçekten değiştiren bir şey olmadığı sürece kullanılmamalıdır. Yaptığın gibi görünüyor sudo npm installki bu genellikle kötü
Eddie Monge Jr



0

Alternatif çözüm: Saatinizi boş bir dosya argümanı için kontrol edin .

İşte benim bir alıntı gruntfile

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

Benim durumumda, orijinal posterin hatasını yukarıdaki boş argümanla talep üzerine yeniden oluşturabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.