2015-01-18 2 views
6

GruntJS 작업이 실패 할 때이를 잡을 수있는 방법이 있습니까?GruntJS에서 Try-Catch 작업

플래그가 도움이되지 않습니다. 무언가가 도중에 깨 졌는지 알아야하고, 그것에 대해 뭔가를해야합니다.

try-catch와 비슷한 방식으로 시도했지만 작동하지 않습니다. grunt.registerTask이 작업을 대기열에 푸시하기 때문에 - 실행이 동기 적이 지 않기 때문입니다.

grunt.registerTask('foo', "My foo task.", function() { 
    try { 
     grunt.task.run('bar'); 
    } catch (ex) { 
     // Handle the failure without breaking the task queue 
    } 
    }); 

크리에이티브 javascript 아이디어는 GruntJS 노하우뿐 아니라 환영합니다.

+1

그것은 [이벤트 API]과 같다 (HTTP :를 통해

grunt.registerMultiTask('foo-task', 'my foo task', function() { try { console.log(this.data); throw new Error('something bad happened!'); } catch (e) { console.log('Ooops:', e); } return true; }); grunt.registerTask('foo', 'Runs foo.', function() { grunt.config('foo-task', { hello: 'world' }); grunt.task.run('foo-task'); }); 

실행이 // gruntjs을 .com/api/grunt.event)는 결국이 작업을 수행 할 수 있도록 허용하지만 v0.5까지 완료되지는 않습니다 [문제 백 로그] (https://github.com/gruntjs/) grunt/issues/1167). – jakerella

+0

@ jakerella 불행히도, 당신은 맞습니다. – pilau

답변

0
난 당신이 객체와 작업을 당신이 그것을 필요로에서 화재 이벤트를 투덜하는 이벤트 리스너을 추가 할 수있는 자바 스크립트 코드를 좋아하지만 그것을 테스트하지 않은

...

알고하지 마십시오 이것은 정확하게 귀하의 질문에 맞는 수 있지만 그것을 시도 줄 것이다.

희망이 있습니다.

+0

그래서 ... 정확히 어디에서 그렇게합니까? "(' 을 다음이 'grunt.on ("taskFailed ", 기능 (메시지) { console.error 같은 코드를 작성, 그런트의 코드는 나의 – pilau

+0

그냥 필요'사용과 같이 ("이벤트 ")를 시도 아니다 오류 메시지 " }); ' 어떤 작업에서도'grunt.emit ("taskFailed ", message); 어떤 결과 주석이 있다면 그냥 생각할뿐입니다! 하하 – Xavis

+0

하지만 작업도 타사 libs 있습니다 ... – pilau

1

이 추악한 짐승은 당신을 위해 작동합니다 : grunt foo

출력 :

Running "foo" task 

Running "foo-task:hello" (foo-task) task 
world 
Ooops: Error: something bad happened! 
    at Object.<anonymous> 

    <stacktrace here>  

Done, without errors. 
관련 문제