ExecJS::ProgramError: Unexpected token punc «(», expected punc «:» when running rake assets:precompile on production
Solution 1
Here I found help for the same problem you had.
Run rails console and:
JS_PATH = "app/assets/javascripts/**/*.js";
Dir[JS_PATH].each do |file_name|
puts "\n#{file_name}"
puts Uglifier.compile(File.read(file_name), harmony: true)
end
It will show you the file and the line where the Uglifier is making the problem.
Solution 2
I suspect, in that js file, you have something like the following:
var User = {
getName() {
alert("my name");
}
}
Replacing it with the right format,
var User = {
getName: function() {
alert("my name");
}
}
worked for me.
Error is clearly saying, it's expecting ":" but it found "(".
Solution 3
Just encounter the same issue.
My case is someone used syntax that's only support since ES2015, ex
function someThing(param = true) {
// do something here
};
while this is not supported in our environment.
And the error messages is actually generated by Uglifer.
Solution 4
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.
.pipe(babel({
plugins: [
'transform-es2015-shorthand-properties'
]
}))
Solution 5
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
snitko
Updated on July 05, 2022Comments
-
snitko almost 2 years
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.