When deploying my Rails app I get the following error:
rake aborted!
ExecJS::ProgramError: Unexpected token punc «(», expected punc «:» (line: 15, col: 14, pos: 265)
Error
at new JS_Parse_Error (/tmp/execjs20150524-4411-1p45n63js:2359:10623)
at js_error (/tmp/execjs20150524-4411-1p45n63js:2359:10842)
at croak (/tmp/execjs20150524-4411-1p45n63js:2359:19086)
at token_error (/tmp/execjs20150524-4411-1p45n63js:2359:19223)
at expect_token (/tmp/execjs20150524-4411-1p45n63js:2359:19446)
at expect (/tmp/execjs20150524-4411-1p45n63js:2359:19584)
at /tmp/execjs20150524-4411-1p45n63js:2359:28513
at /tmp/execjs20150524-4411-1p45n63js:2359:19957
at expr_atom (/tmp/execjs20150524-4411-1p45n63js:2359:27269)
at maybe_unary (/tmp/execjs20150524-4411-1p45n63js:2359:30019)new JS_Parse_Error ((execjs):2359:10623)
js_error ((execjs):2359:10842)
croak ((execjs):2359:19086)
token_error ((execjs):2359:19223)
expect_token ((execjs):2359:19446)
expect ((execjs):2359:19584)
(execjs):2359:28513
(execjs):2359:19957
expr_atom ((execjs):2359:27269)
maybe_unary ((execjs):2359:30019)
The file in question is valid, it works on localhost. I also tried running rake assests:precompile
on localhost, it all passes. Finally, I tried to remove the content from the file, git push and redeploy - still got the same error. Only completely removing the file and re-deploying helps.
Would appreciate any ideas.
I could use https://skalman.github.io/UglifyJS-online/ to identify the correct line number where the issue was. Thankfully, at least the correct file which had an issue was pointed out by grunt uglify
I'm not sure of your build chain, but I got here by pasting the same error message into Google.
That is called 'shorthand properties' in ES2015. I'm using Babel 6 with Gulp and needed to do an
npm install babel-plugin-transform-es2015-shorthand-properties --save-dev
and add that transform to my babel plugins.https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-shorthand-properties
Just encounter the same issue.
My case is someone used syntax that's only support since ES2015, ex
while this is not supported in our environment.
And the error messages is actually generated by Uglifer.
In my case problem with function definition like,
Due to above function definition I was getting error, as it is not supported by Uglifier. Default parameters is ES6/ES2015 language specification.
For solution to above problem you can refer Set a default parameter value for a JavaScript function
As the backtrace doesn't provide information about the corrupted file, for me the best way to identify the error is use git bisect.
It allows you to find the commit that introduces a bug.
Let's suppose you are on master, first you start git bisect:
Then you go back to a previous, working revision, let's suppose 20 revision ago.
You run the same command
If it works you mark revision as good:
git will jump to another revision, you run same command again (assets:precompile) and bassed on the output mark it as good / bad.
In less than 1 minute you should be able to find what's the commit that introduced the issue.
Here I found help for the same problem you had.
Run rails console and:
It will show you the file and the line where the Uglifier is making the problem.