[英]Gulp js error notification not showing source of error
一切都已設置好,並可以連接和編譯我的樣式和腳本。 當發生錯誤時, gulp-notify
和gulp-plumber
將錯誤作為mac通知和在終端中拋出,並且gulp不會停止運行-很棒:)
但是,我發現在終端中引發的腳本錯誤始終是編譯文件script-dist.js
而不是實際的串聯源文件的問題。
錯誤
gulp-notify: [JS Error] _PATH_/js/script-dist.js: Unexpected token keyword «var», expected punc «{»
Error in plugin 'gulp-uglify'
Message:
_PATH_/js/script-dist.js: Unexpected token keyword «var», expected punc «{»
Details:
fileName: _PATH_/js/script-dist.js
lineNumber: 3
請注意,這並不能告訴我實際錯誤是從哪里來的(應該說它在_modal.js
,這是我故意在其中創建錯誤的並置文件之一。
gulpfile.js
var gulp = require('gulp');
// --------------------------------------------------------------
// Plugins
// ---------------------------------------------------------------
var concat = require('gulp-concat');
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
var jshint = require('gulp-jshint');
var include = require('gulp-include');
var sass = require('gulp-sass');
var minifycss = require('gulp-minify-css');
var watch = require('gulp-watch');
var livereload = require('gulp-livereload');
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');
// --------------------------------------------------------------
// JS
// ---------------------------------------------------------------
gulp.task('scripts', function() {
return gulp.src(['./js/script.js'])
.pipe(include())
.pipe(plumber({errorHandler: errorScripts}))
.pipe(concat('script-dist.js'))
.pipe(uglify())
.pipe(gulp.dest('./js/'))
.pipe(livereload());
});
// --------------------------------------------------------------
// Styles
// ---------------------------------------------------------------
gulp.task("styles", function(){
return gulp.src("./ui/scss/styles.scss")
.pipe(include())
.pipe(plumber({errorHandler: errorStyles}))
.pipe(sass({style: "compressed", noCache: true}))
.pipe(minifycss())
.pipe(gulp.dest("./ui/css/"))
.pipe(livereload());
});
// --------------------------------------------------------------
// Errors
// ---------------------------------------------------------------
// Styles
function errorStyles(error){
notify.onError({title: "Sass Error", message: "", sound: "Sosumi"})(error); //Error Notification
console.log(error.toString()); // Prints Error to Console
this.emit("end");
};
// Scripts
function errorScripts(error){
notify.onError({title: "JS Error", message: "", sound: "Sosumi"})(error); //Error Notification
console.log(error.toString()); // Prints Error to Console
this.emit("end");
};
// --------------------------------------------------------------
// Watch & Reload
// ---------------------------------------------------------------
gulp.task('watch', function() {
gulp.watch('./ui/scss/*.scss', ['styles']);
gulp.watch(['./js/*.js', '!./js/script-dist.js'], ['scripts']);
});
gulp.task('default', ['styles', 'watch']);
gulp.task('default', ['scripts', 'watch']);
livereload.listen();
task("styles", function(){
return gulp.src("./ui/scss/styles.scss")
.pipe(include())
.pipe(plumber({errorHandler: errorStyles}))
.pipe(sass({style: "compressed", noCache: true}))
.pipe(minifycss())
.pipe(gulp.dest("./ui/css/"))
.pipe(livereload());
});
// --------------------------------------------------------------
// Errors
// ---------------------------------------------------------------
// Styles
function errorStyles(error){
notify.onError({title: "Sass Error", message: "", sound: "Sosumi"})(error); //Error Notification
console.log(error.toString()); // Prints Error to Console
this.emit("end");
};
// Scripts
function errorScripts(error){
notify.onError({title: "JS Error", message: "", sound: "Sosumi"})(error); //Error Notification
console.log(error.toString()); // Prints Error to Console
this.emit("end");
};
// --------------------------------------------------------------
// Watch & Reload
// ---------------------------------------------------------------
gulp.task('watch', function() {
gulp.watch('./ui/scss/*.scss', ['styles']);
gulp.watch(['./js/*.js', '!./js/script-dist.js'], ['scripts']);
});
gulp.task('default', ['styles', 'watch']);
gulp.task('default', ['scripts', 'watch']);
livereload.listen();
您concat
傳遞之前uglify
,因此應盡量丑化而言,這里只有一個單一的文件存在。 您可能想要使用例如linter來首先傳遞文件,以確保它們是正確的。
或者,使用sourcemaps ,可以利用哪些工具來顯示發生錯誤的原始文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.