22

当我将 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'));
});
4

4 回答 4

72

uglify将在缩小之前解析脚本内容。我怀疑其中一个browserify源映射被包含在流中,直到uglify. 无论如何要找到问题,您可以使用gulp-util'log方法来处理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'));
});

如果您仍然无法解决问题,请在合并错误日志后发布详细信息。

于 2015-02-08T19:25:21.517 回答
6

我遇到了同样的问题gulp-concat-sourcemapand gulp-uglify。我通过使用gulp-ignore忽略地图文件来解决它:

gulp.task("uglify-src", function() {
    gulp.src([ "src/js/**/*.js" ])
    .pipe(concat("app.js"))
    .pipe(ignore.exclude([ "**/*.map" ]))
    .pipe(uglify())
    .pipe(gulp.dest("dist/js"));
});
于 2015-03-10T18:49:14.237 回答
0

Node.js 管道不会传播错误。本文uglify().on除了描述使用 ofpump代替pipe.

https://github.com/terinjokes/gulp-uglify/blob/master/docs/why-use-pump/README.md#why-use-pump

于 2017-08-12T18:28:13.100 回答
0

这可能是源 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));
}); 
于 2017-06-26T20:19:55.113 回答