生产环境下运行rake assets:precompile时出现ExecJS::ProgramError错误:意外的标记符号punc«(»,预期标记符号punc«:».

70

部署我的Rails应用程序时,我遇到以下错误:

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)

这个文件是有效的,在本地主机上可以正常使用。我还尝试在本地运行rake assests:precompile,一切都通过了。最后,我尝试从文件中删除内容、git push并重新部署-仍然出现相同的错误。只有完全删除该文件并重新部署才能解决问题。

欢迎提供任何想法。


你是在说清单文件吗?请明确解释一下。 - Kamesh
哪段CSS代码导致了这个问题?你能提供一下吗?你正在使用哪个版本的execjs? - andreanne.wintheiser
这不是CSS代码,而是Javascript代码。不幸的是我无法提供它,但是在本地主机上使用“rake asset:precompile”可以编译它并且是有效的。我不确定如何检查ExecJS版本,我的Gemfile.lock中有execjs,但没有列出版本号。 - orion3
2
有人能解释一下如何知道错误指的是哪个文件吗?根据这个错误,我怎么确定是哪个实际的JS文件导致了错误? - flyingL123
1
@snitko 如果您选择正确的答案,那对每个人来说都是很好的。看起来Rasovan Skendzic的回答是最好的! - Miguel Peniche
显示剩余8条评论
11个回答

0
如果你正在维护一个遗留项目(使用非常旧的 Ruby 版本,例如1.9.3和 Rails 3.2.x),我建议不要使用 uglifier&exec-js,只需从 config/environments/production.rb 中注释掉这行代码即可:
config.assets.compress = true

还要确保你已经安装了nodejs作为JavaScript运行时。

参考:"rake assets:precompile" gives punc error


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接