2016-06-17 2 views
0

Это то, что только что началось вчера, и это вызывает у меня большую головную боль.esprima.js/gulp-strip-debug, мешающий заданию gulp-jshint, сообщая о бесполезных ошибках при снятии заявлений отладчика

В рамках моей сборки для arcade.ly У меня есть check-scripts задачу, которая лишает отладки кода и запускает jshint все мои JavaScript:

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, сообщающую мне, что именно не так. Теперь, когда я бегу gulp check-scripts, если есть проблема, которую я часто получаю такую ​​ошибку:

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) 

Как вы можете видеть, что нет никакой полезной информации там. На данный момент я рефакторинг, поэтому мои изменения часто охватывают несколько файлов. Проблема здесь в том, что я вижу, что парсер esprima недоволен, но я понятия не имею, какой файл его нарушает, и какая строка кода внутри этого файла.

Я могу понять его итеративным комментирования и раскомментировать строки в check-scripts и перезапустив gulp-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 и настроить jshint игнорировать debugger заявления, для DEV строит только, но есть способ настроить gulp-strip-debug сообщать об ошибках лучше, или это ошибка/дизайн изъян/контроль?

Любое понимание/предложения были бы с благодарностью получены.

Спасибо,

Барт

ответ

0

gulp-strip-debug библиотека представляет собой очень тонкую оболочку вокруг strip-debug поэтому я соблазн сделать вывод, что это ошибка (или недостаток) в strip-debug, хотя она также может быть в способ gulp-strip-debug сообщает об ошибках от strip-debug.

Мне нужно исследовать немного дальше и, возможно, поставить PR. Было бы достаточно легко заставить его сообщить, в каком файле находится ошибка, даже без номера строки, что само по себе было бы большим улучшением.

Смежные вопросы