grunt throw "Proses rekursif.nextTick terdeteksi"


89

Saya menjalankan Lion 10.9.2 dengan nodejs v0.10.26

Saya ingin mengatur kompilasi otomatis pada file sass dan memuat ulang langsung dengan grunt, tidak ada yang rumit tapi ...

Saat menjalankan grunt watchsaya mendapatkan kesalahan berikut

(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

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

};

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

Jawaban:


299

Saya akhirnya menemukan masalah serupa yang saya alami dengan SASS. Saya menggunakan

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

Triknya adalah Grunt tampaknya tidak menyukai pengulangan dalam nama. Saat saya beralih ke

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

Semuanya bekerja sebagaimana mestinya.


58
+9000 - ini adalah bug bodoh dan perbaikan Anda menghemat waktu saya untuk mencoba mencari tahu. Terima kasih!
jkat98

2
luar biasa, terima kasih telah melihat ini. Saya menyadari kita tidak perlu mendaftarkan satu tugas pun, karena grunt akan menjalankan 'grunt sass' saat Anda mengetiknya ke baris perintah.
Stefan

Terima kasih telah melihat ini, juga mengalami ini dan kesalahannya tidak terlalu membantu.
Kevin Holditch

1
Terima kasih telah menjawab ini ... Saya telah menampar kepala saya di meja selama satu setengah jam terakhir mencari tahu mengapa grunt-bower-concatplugin memberi saya keluaran itu.
Derek

Terima kasih untuk ini. Itu membuatku gila!
Michael Giovanni Pumo

17

Baru saja mengalami masalah ini. Selesaikan dengan menghapusgrunt.registerTask('watch', [ 'watch']);


Saya memiliki nama / masalah persis seperti ini. Sheesh…
Steve Meisner

1
Ini menyelesaikannya untuk saya, bukan jawaban yang diterima. Terima kasih Tuhan, ada Stackoverflow dan jawaban Anda, saya tidak akan menemukan ini dalam sejuta tahun: D
Marko Grešak

11

Saya baru saja memperbaiki kesalahan serupa "Proses rekursif.nextTick terdeteksi" yang disebabkan oleh perintah: server grunt

Solusinya? Gunakan sudo grunt serve sebagai gantinya


ini seharusnya tidak menjadi solusi. sudotidak boleh digunakan kecuali itu adalah sesuatu yang benar-benar mengubah sistem Anda. Kedengarannya seperti sudo npm installyang sering Anda lakukan itu buruk
Eddie Monge Jr



0

Solusi alternatif: periksa arloji Anda untuk melihat argumen file kosong .

Berikut kutipan dari saya gruntfile

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

Dalam kasus saya, saya dapat membuat ulang kesalahan poster asli sesuai permintaan dengan argumen kosong di atas.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.