terinjokes/gulp-uglify

Error when trying to uglify object with key defined via square brackets

Closed this issue · 2 comments

If I try to uglify this:

var foo = {bar: "key"};
var obj = {
    [foo.bar]: 3
};

I get the following error:

{ SyntaxError: Unexpected token: punc ([)
    at JS_Parse_Error.get (eval at <anonymous> (C:\Users\USER\Desktop\conveuro\node_modules\uglify-js\tools\node.js:20:1), <anonymous>:71:23)
    at formatError (util.js:610:16)
    at formatValue (util.js:514:18)
    at formatProperty (util.js:801:11)
    at formatObject (util.js:617:17)
    at formatValue (util.js:579:18)
    at formatProperty (util.js:801:11)
    at formatObject (util.js:617:17)
    at formatValue (util.js:579:18)
    at inspect (util.js:294:10)
        message: 'Unexpected token: punc ([)',
        filename: 'foo.js',
        line: 3,
        col: 4,
        pos: 42 },
     plugin: 'gulp-uglify',
     fileName: 'C:\\Users\\USER\\Desktop\\conveuro\\extension\\content-script\\_src\\js\\foo.js',
     showStack: false }

And this is perfectly valid JavaScript. If I execute it in the console, the value of obj would be {key: 3}.
I use version 3.0.1 of the plugin, which is the latest.

This requires you to use a version of UglifyJS that supports ES Harmony features. Check out the README for more details.

Hi @terinjokes. I had a look to the README but I still don't know how to fix this issue. I tried installing this but didn't work:
"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony"

Do we also need to modify the uglify task or just installing the new version should work automatically?