grunt ném “Đã phát hiện quy trình đệ quy.nextTick”


88

Tôi đang chạy Lion 10.9.2 với nodejs v0.10.26

Tôi muốn thiết lập một biên dịch tự động trên các tệp sass và tải lại trực tiếp với grunt, không có gì phức tạp nhưng ...

Khi chạy grunt watch tôi gặp lỗi sau

(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

đây là 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' ]);

};

và đây là 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"
  }
}

Câu trả lời:


298

Cuối cùng tôi đã tìm ra một vấn đề tương tự mà tôi đang gặp phải với SASS. tôi đang sử dụng

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

Bí quyết là Grunt dường như không thích sự lặp lại trong tên. Khi tôi chuyển sang

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

Mọi thứ đều hoạt động như bình thường.


58
+9000 - đây là một lỗi ngu ngốc và bản sửa lỗi của bạn đã giúp tôi tiết kiệm thời gian tìm ra lỗi. Cảm ơn!
jkat98

2
tuyệt vời, cảm ơn vì đã phát hiện ra điều này. Tôi nhận ra rằng chúng ta không cần phải đăng ký một tác vụ duy nhất, bởi vì grunt sẽ chạy 'grunt sass' khi bạn nhập nó vào dòng lệnh.
stefan

Cảm ơn vì đã phát hiện ra điều này, tôi cũng gặp phải lỗi này và lỗi không hữu ích lắm.
Kevin Holditch

1
Cảm ơn bạn đã trả lời điều này ... Tôi đã vùi đầu vào bàn làm việc trong một giờ rưỡi qua để tìm ra lý do tại sao grunt-bower-concatplugin lại cung cấp cho tôi kết quả đó.
Derek

Cảm ơn vì điều đó. Nó đã làm tôi phát điên!
Michael Giovanni Pumo

16

Chỉ có vấn đề này. Đã giải quyết nó bằng cách xóagrunt.registerTask('watch', [ 'watch']);


Tôi đã có tên / vấn đề chính xác này. Sheesh…
Steve Meisner

1
Điều này đã giải quyết nó cho tôi, không phải là câu trả lời được chấp nhận. Cảm ơn thần có Stackoverflow và câu trả lời của bạn, tôi sẽ không tìm thấy điều này trong một triệu năm: D
Marko Grešak

10

Tôi vừa khắc phục một lỗi tương tự "Đã phát hiện ra process.nextTick đệ quy" do command: grunt server

Giải pháp? Sử dụng sudo grunt serve thay thế


đây không bao giờ nên là giải pháp. sudokhông nên được sử dụng trừ khi thứ gì đó thực sự đang thay đổi hệ thống của bạn. Có vẻ như bạn đã làm sudo npm installđiều đó thường là tồi tệ
Eddie Monge Jr


0

Giải pháp thay thế: kiểm tra đồng hồ của bạn để tìm đối số tệp trống .

Đây là một đoạn trích của tôi gruntfile

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

Trong trường hợp của tôi, tôi có thể tạo lại lỗi của người đăng ban đầu theo yêu cầu với đối số trống ở trên.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.