Search code examples
gulpbrowserifygulp-uglify

GulpUglifyError: unable to minify JavaScript error with Browserify


I'm bundling my script with Browserify + Babel like this:

function buildJs() {
    let bopts = {
        paths: [
            `${SRC}/js`,
            './config'
        ],
        debug: !isProduction
    };
    let opts = Object.assign({}, watchify.args, bopts);
    let b = watchify(persistify(opts));

    b.add(`${SRC}/js/index.js`)
    .on('update', bundle)
    .on('log', gutil.log)
    .external(vendors)
    .transform(babelify, { 
        presets: ["es2015", "react"],
        plugins: [
            "syntax-async-functions",
            "transform-regenerator",
            "transform-class-properties",
            "transform-decorators-legacy",
            "transform-object-rest-spread",
            "transform-react-jsx-source",
            staticFs
        ]
    })
    .transform(browserifyCss, { global: true });

    function bundle() {
        let stream = b.bundle()
        .on('error', swallowError)
        .on('end', () => {
            gutil.log(`Building JS:bundle done.`);
        })
        .pipe(source('bundle.js'))
        .pipe(streamify(uglify()));

        return stream.pipe(gulp.dest(`${DIST}/js`));
    }

    return bundle();
}

It's just browserify -> babelify -> browserify-css -> uglify -> gulp.dest. But If I ran this task, it fails with:

[17:00:30] Using gulpfile ~/ctc-web/gulpfile.js
[17:00:30] Starting 'build'...
[17:00:46] 1368516 bytes written (16.43 seconds)
[17:00:46] Building JS:bundle done.

events.js:160
      throw er; // Unhandled 'error' event
      ^
GulpUglifyError: unable to minify JavaScript
    at createError (/home/devbfex/ctc-web/node_modules/gulp-uglify/lib/create-error.js:6:14)
    at wrapper (/home/devbfex/ctc-web/node_modules/lodash/_createHybrid.js:87:15)
    at trycatch (/home/devbfex/ctc-web/node_modules/gulp-uglify/minifier.js:26:12)
    at DestroyableTransform.minify [as _transform] (/home/devbfex/ctc-web/node_modules/gulp-uglify/minifier.js:79:19)
    at DestroyableTransform.Transform._read (/home/devbfex/ctc-web/node_modules/readable-stream/lib/_stream_transform.js:159:10)
    at DestroyableTransform.Transform._write (/home/devbfex/ctc-web/node_modules/readable-stream/lib/_stream_transform.js:147:83)
    at doWrite (/home/devbfex/ctc-web/node_modules/readable-stream/lib/_stream_writable.js:338:64)
    at writeOrBuffer (/home/devbfex/ctc-web/node_modules/readable-stream/lib/_stream_writable.js:327:5)
    at DestroyableTransform.Writable.write (/home/devbfex/ctc-web/node_modules/readable-stream/lib/_stream_writable.js:264:11)
    at Transform.ondata (_stream_readable.js:555:20)

Just skip uglify works, but I really need it.

The weird thing is that error was occured after end event. I tried using with vinyl-buffer, but same errors happen.

I couldn't find any solution, every my attemps fails with same error message.

What am I missing? Is there a something that I missed?


Solution

  • Try to replace let by var and see what happens.