Al implementar mi aplicación Rails, aparece el siguiente 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) El archivo en cuestión es válido, funciona en localhost. También intenté ejecutar rake assests:precompile en localhost, todo pasa. Finalmente, traté de eliminar el contenido del archivo, git push y volver a implementar, todavía recibí el mismo error. Solo ayuda eliminar completamente el archivo y volver a implementarlo.
Apreciaría cualquier idea.
Aquí encontré ayuda para el mismo problema que tuviste.
Ejecute la consola Rails y:
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) endLe mostrará el archivo y la línea donde Uglifier está creando el problema.
Sospecho que, en ese archivo js, tienes algo como lo siguiente:
var User = { getName() { alert("my name"); } }Reemplazándolo con el formato correcto,
var User = { getName: function() { alert("my name"); } }trabajó para mi.
El error dice claramente que esperaba ":" pero encontró "(".
Acabo de encontrar el mismo problema.
Mi caso es que alguien usó sintaxis que solo es compatible desde ES2015, ex
function someThing(param = true) { // do something here };mientras que esto no es compatible en nuestro entorno.
Y los mensajes de error en realidad son generados por Uglifer.