当我使用comman gulp scripts:common
运行任务时,我得到了这个输出:
[14:05:47] Requiring external module babel-core/register
[14:05:49] Using gulpfile /home/sites/blablabla/gulpfile.babel.js
[14:05:49] Starting 'scripts:common'...
events.js:141
throw er; // Unhandled 'error' event
^
SyntaxError: Unexpected token
好吧,对于SyntaxError,知道它发现意外令牌的位置会很有用。如何告诉它至少显示文件和行?哪里可以找到evetns.js文件?我可以把console.trace()
或类似的东西放在那里吗?
答案 0 :(得分:1)
我通过在我的脚本上运行jshint
解决了这个问题:
/*
* `gulp check_scripts` - Lints script files
*/
gulp.task('check_scripts', function() {
return gulp.src([
'gulpfile.js' //, other scripts to check
])
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(gulpif(enabled.failJSHint, jshint.reporter('fail')));
});
enabled.failJSHint
允许错误在本地环境中传递但在生产中失败。
这将会破坏脚本中的任何语法错误。 此外,您可能希望将其挂钩到其他任务,以便在正确构建之前自动运行:
gulp.task('default', ['check_scripts', 'clean'], function() {
gulp.start('build');
});
这是一般的想法。
答案 1 :(得分:1)
您可以通过向gulp任务添加自定义“on error”处理程序来查看错误堆栈跟踪。
gulp.task('compile:js', function() {
return (
gulp.src(jsPath)
.pipe(yourCustomTask())
.on('error', function(err) {
console.log(err.stack);
this.end();
})
);
});
答案 2 :(得分:0)
此外,作为另一种变体,将gulp-plumber添加到管道中会使错误消息更加清晰。