2016-06-17 11 views
0

을 제거 할 때 그냥 어제 일이 시작 뭔가 도움이되지 않는 오류를보고하여 꿀꺽-jshint 작업을 방해 스트립 디버그를 꿀꺽, 그것은 나에게 큰 두통의 원인.esprima.js/디버거 문

arcade.ly 내 구축의 일환으로 내 자바 스크립트 디버깅 코드를 제거합니다 모든 이상 jshint를 실행하는 check-scripts 작업이 있습니다

까지
gulp.task('check-scripts', function() { 
    return gulp.src([ 
     'src/static/scripts/common/pinjector.js', 
     'src/static/scripts/common/service.*.js', 
     'src/static/scripts/asteroids-starcastle/*.js', 
     'src/static/scripts/asteroids/asteroids.js', 
     'src/static/scripts/asteroids/app.js', 
     'src/static/scripts/starcastle/actor.*.js', 
     'src/static/scripts/starcastle/service.*.js', 
     'src/static/scripts/starcastle/starcastle.js', 
     'src/static/scripts/starcastle/app.js', 
     'src/static/scripts/space-invaders/actor.*.js', 
     'src/static/scripts/space-invaders/service.*.js', 
     'src/static/scripts/space-invaders/space-invaders.js', 
     'src/static/scripts/space-invaders/app.js', 
     'src/server/*.js', 
    ]) 
    .pipe(stripDebug()) 
    .pipe(jshint({ 
     laxbreak: true, 
     multistr: true 
    })) 
    .pipe(jshint.reporter('default')) 
    .pipe(jshint.reporter('fail')); 
}); 

이 있다면이 절대적으로 잘 작동하고 있었다 어제까지 문제가 있으면 무엇이 잘못 되었는지 알려주는 데 도움이되는 jshint 오류가 발생합니다. 당신이 볼 수 있듯이

11:47:00] Starting 'check-scripts'... 

events.js:154 
     throw er; // Unhandled 'error' event 
    ^
Error: Line 30: Unexpected identifier 
    at constructError (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2406:21) 
    at createError (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2425:17) 
    at unexpectedTokenError (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2499:13) 
    at throwUnexpectedToken (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2504:15) 
    at expect (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2522:13) 
    at expectCommaSeparator (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2546:13) 
    at parseObjectInitializer (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:3052:17) 
    at inheritCoverGrammar (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2680:18) 
    at parsePrimaryExpression (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:3246:20) 
    at inheritCoverGrammar (/Library/WebServer/Documents/arcade/node_modules/esprima/esprima.js:2680:18) 

, 거기에 유용한 정보가 없습니다 : 나는 gulp check-scripts을 실행하면 이제, 문제는 나는 종종 이런 종류의 오류를 얻을이 있다면. 지금은 리팩토링하므로 변경 세트는 종종 여러 파일을 포함합니다. 여기서 문제는 esprima의 파서가 불행하다는 것을 알 수 있습니다. 그러나 어떤 파일이 파기되어 있는지, 어떤 코드 줄이 파 일인지 전혀 모릅니다.

나는, 결국 주석과 주석을 코드에 의해 반복적으로 주석과의 주석 라인을 check-scriptsgulp-checkscripts를 다시 실행하여 알아낼 수 있지만, 그것은 분명히 기계에 의존의 비트입니다. 당신이 볼 수 있듯이

function masterSoundConfiguration() { 
    var masterConfig = { 
     elementCountForRapidRepeat: 6, 
     sfxMasterVolume: 0.4, 
     musicMasterVolume: 0.6, 
     sounds: [], 
     music: []      // <-- Missing comma 
     mergeIntoMaster: mergeIntoMaster 
    }; 

    ... 
} 

이 오류의 원인이 누락 된 쉼표있다 :

이 경우이 오류를 발생시킨 코드입니다.

문제는 gulp-strip-debug에 의한 것으로 보인다,하지만 난 단순히 사용하지 않으면이 jshint 때문에의 debugger 문을 불평 할 것이다. dev에서 사이트를 실행하려면 빌드해야하기 때문에 이것은 번거로운 작업입니다.

은 내가 gulp-strip-debug을 비활성화하고 DEV는 빌드를 들어, debugger 문을 무시 jshint을 구성 할 수 있습니다 생각하지만, 더 나은 오류를보고 할 gulp-strip-debug를 구성하는 방법은 무엇입니까, 또는이 버그/설계 결함/감독입니까?

어떤 통찰력/제안을 기꺼이받을 수있다.

감사합니다,

바트

답변

0

그것은 또한에있을 수 있지만 gulp-strip-debug 라이브러리, 매우 얇은 래퍼 주위 strip-debug 그래서이 strip-debug 버그 (또는 부족)입니다 결론을 유혹하고있어입니다 방법 gulp-strip-debugstrip-debug에서 오류를보고합니다.

나는 조금 더 조사 아마도 홍보에 넣어해야합니다. 줄 번호 없이도 오류가있는 파일을보고하는 것은 쉽지만 충분히 개선 될 것입니다.