Gulp Uglify抛出解析错误

Gulp Uglify抛出解析错误,gulp,gulp-uglify,Gulp,Gulp Uglify,当我将gulp uglify与browserify一起使用时,会出现一个错误 events.js:72 throw er; // Unhandled 'error' event ^ Error at new JS_Parse_Error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:189:18) at js_er

当我将gulp uglify与browserify一起使用时,会出现一个错误

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error
    at new JS_Parse_Error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:189:18)
    at js_error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:197:11)
    at croak (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:656:9)
    at token_error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:664:9)
    at expect_token (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:677:9)
    at expect (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:680:36)
    at /home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1222:13
    at /home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:703:24
    at expr_atom (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1152:35)
    at maybe_unary (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1327:19)
    at expr_ops (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1362:24)
    at maybe_conditional (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1367:20)
    at maybe_assign (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1391:20)
    at expression (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1410:20)
这是我的脚本任务

gulp.task('scripts', function() {

    var bundler = browserify({
        entries: ['./src/scripts/main.js'],
        debug: debug
    }).transform(stringify()); // the error persist even without this transformation

    bundler
        .bundle()
        .on('error', handleErrors)
        .pipe(source(getBundleName() + '.js'))
        .pipe(jshint())
        .pipe(jshint.reporter('default', { verbose: true }))
        .pipe(jshint.reporter('fail'))
        .pipe(buffer())
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(uglify())
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('./web/js'));
});

uglify
将在缩小脚本内容之前对其进行分析。我怀疑
browserify
源地图中的一个被包含在
uglify
流中。无论如何,要找到问题,您可以使用的方法来处理
uglify
的异常。例如:

...
var gulpUtil = require('gulp-util');

gulp.task('scripts', function() {
    ...
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(uglify().on('error', gulpUtil.log)) // notice the error event here
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('./web/js'));
});

如果您在修复该问题时仍有问题,请在合并错误日志后发布详细信息。

我在
gulp concat sourcemap
gulp uglify
中遇到了同样的问题。我通过忽略以下映射文件解决了此问题:


这可能是源JavaScript文件中的一个简单错误。尝试通过在gulpfile中注释来禁用uglify,看看浏览器控制台是否发现了真正的问题

gulp.task('minified', function () {
    return gulp.src(paths.concatScripts)
        .pipe(sourcemaps.init())       
        //.pipe(uglify())
        .pipe(sourcemaps.write('.', { addComment: false }))        
        .pipe(gulp.dest(publishUrl));
}); 

Node.js管道不会传播错误。这篇文章提到了@Marcos Abreu在方法上的
uglify(),此外还描述了使用
代替
管道


不知道为什么我花了这么长时间才找到这个。。。gulp util帮助我立即查明错误。。谢谢你发布这个!FWIW您也可以在('error',console.log)
上执行
.on
可能不像上面那样简洁,但我不想要另一个依赖项,但…不真实!谢谢我用“let”声明了2个变量。。。我一直在Swift3和JS之间切换:如果您找到了问题的解决方案,请a)接受解决问题的答案(可能添加一条注释说明如何),或者B)发布您自己的答案,说明您是如何解决问题的。(这是绝对可以的,只要它确实与现有的答案不同。因此,您可以在48小时后接受自己的答案。)
gulp.task('minified', function () {
    return gulp.src(paths.concatScripts)
        .pipe(sourcemaps.init())       
        //.pipe(uglify())
        .pipe(sourcemaps.write('.', { addComment: false }))        
        .pipe(gulp.dest(publishUrl));
});