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"
  }
}
denisjacquemin.dll
sumber

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.

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

Abraham Parangi
sumber
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

krazyweb
sumber
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.

Brian Muenzenmeyer
sumber