Das ist etwas, was gerade gestern passiert ist, und es bereitet mir große Kopfschmerzen.esprima.js/gulp-strip-debug interferiert mit gulp-jshint task durch das Melden nicht hilfreicher Fehler beim Entfernen von Debugger-Anweisungen
Im Rahmen meiner Build für arcade.ly Ich habe eine check-scripts
Aufgabe, die Debugging-Code-Streifen und läuft jshint über alle meine 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'));
});
Bis dies gestern funktionierte absolut in Ordnung und, wenn es ein Problem, ich würde einen hilfreichen jshint
Fehler bekommen, der mir genau sagt, was falsch ist. Nun, wenn ich gulp check-scripts
laufen, wenn es ein Problem gibt oft ich diese Art von Fehlern:
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)
Wie Sie sehen können, gibt es keine nützlichen Informationen drin. Im Moment refaktoriere ich, so dass meine Changes oft eine Reihe von Dateien abdecken. Das Problem hier ist, ich kann sehen, esprima Parser ist unglücklich, aber ich habe keine Ahnung, welche Datei es bricht, noch welche Zeile des Codes in dieser Datei.
Ich kann es durch iteratives Kommentieren und Auskommentieren von Zeilen in check-scripts
und rerunning gulp-checkscripts
und schließlich durch Kommentieren und Auskommentieren von Code herausfinden, aber es ist offensichtlich ein wenig lästig.
In diesem Fall ist dies der Code, der den Fehler verursacht hat:
function masterSoundConfiguration() {
var masterConfig = {
elementCountForRapidRepeat: 6,
sfxMasterVolume: 0.4,
musicMasterVolume: 0.6,
sounds: [],
music: [] // <-- Missing comma
mergeIntoMaster: mergeIntoMaster
};
...
}
Wie Sie sehen können, gibt es ein fehlendes Komma, die den Fehler verursacht.
Das Problem scheint durch gulp-strip-debug
verursacht werden, aber wenn ich diese einfach deaktivieren jshint wird wegen debugger
Aussagen beklagen. Da ich bauen muss, um die Website sogar in Dev laufen zu lassen, ist dies ein Aufwand.
Ich glaube, ich gulp-strip-debug
deaktivieren könnte und konfigurieren jshintdebugger
Aussagen zu ignorieren, für Entwickler nur baut, aber ist es eine Möglichkeit, gulp-strip-debug
zu konfigurieren, um Fehler zu melden besser, oder ist das ein Bug/Designfehler/Aufsicht?
Einsicht/Anregungen dankbar empfangen würde.
Danke,
Bart