grunt throw "Recursive process.nextTick detected"


89

nodejs v0.10.26으로 Lion 10.9.2를 실행하고 있습니다.

sass 파일에 자동 컴파일을 설정하고 grunt로 라이브 리로드를 설정하고 싶지만 복잡하지는 않지만 ...

실행할 때 grunt watch다음 오류가 발생합니다.

(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

여기에 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' ]);

};

그리고 여기 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"
  }
}

답변:


299

나는 마침내 SASS와 비슷한 문제를 발견했습니다. 나는 사용하고 있었다

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

트릭은 Grunt가 이름의 반복을 좋아하지 않는 것 같습니다. 내가로 전환 할 때

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

모든 것이 제대로 작동했습니다.


58
+9000-이것은 어리석은 버그이며 당신의 수정은 제가 알아내는 데 시간을 절약 해주었습니다. 감사!
jkat98 2014 년

2
대단합니다, 이것을 발견해 주셔서 감사합니다. 명령 줄에 입력 할 때 grunt가 'grunt sass'를 실행하기 때문에 어쨌든 단일 작업을 등록 할 필요가 없다는 것을 깨달았습니다.
stefan

이것을 발견해 주셔서 감사합니다. 또한 이것에 부딪 쳤고 오류는 그다지 도움이되지 않습니다.
Kevin Holditch 2014

1
답 해주셔서 감사합니다 ... 지난 1 시간 반 동안 grunt-bower-concat나는 플러그인이 왜 나에게 그 출력을 제공 하는지 알아 내기 위해 책상 위에서 머리를 두드렸다 .
Derek

감사합니다. 그것은 나를 미치게 만들었다!
Michael Giovanni Pumo 2014-08-21

17

이 문제가있었습니다. 제거하여 해결했습니다.grunt.registerTask('watch', [ 'watch']);


이 정확한 이름 / 문제가있었습니다. Sheesh…
Steve Meisner 2014

1
이것은 받아 들인 대답이 아니라 나를 위해 해결했습니다. 신에 유래과 답변, 나는 백만 년이가 찾을 것이다 것 감사합니다 : D
마르코 Grešak

11

방금 명령에 의해 발생하는 유사한 오류 "재귀 적 process.nextTick 감지 됨"을 수정했습니다 : grunt server

해결책? 대신 sudo grunt serve 사용


이것은 결코 해결책이되어서는 안됩니다. sudo실제로 시스템을 변경하지 않는 한 사용해서는 안됩니다. 당신이 한 것 같은데 sudo npm install종종 불량 인
에디 몽주 주니어에게



0

대체 솔루션 : 시계에서 빈 파일 인수를 확인하십시오 .

여기에 내 발췌 gruntfile

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

제 경우에는 위의 빈 인수를 사용하여 요청시 원본 포스터의 오류를 재현 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.