Ruby on rails 3 在Rails中预编译资源时,如何解决意外的字符“”错误?

Ruby on rails 3 在Rails中预编译资源时,如何解决意外的字符“”错误?,ruby-on-rails-3,asset-pipeline,Ruby On Rails 3,Asset Pipeline,我第一次尝试部署我的应用程序,但遇到了资产管道问题。当我运行bundle exec rake资产时:precompile我得到以下错误 cool_app@ip-10-248-17-168:/rails_apps/cool_app/current$ bundle exec rake assets:precompile /home/cool_app/.rvm/rubies/ruby-1.9.3-p327/bin/ruby /rails_apps/cool_app/shared/bundle/ruby

我第一次尝试部署我的应用程序,但遇到了资产管道问题。当我运行bundle exec rake资产时:precompile我得到以下错误

cool_app@ip-10-248-17-168:/rails_apps/cool_app/current$ bundle exec rake assets:precompile
/home/cool_app/.rvm/rubies/ruby-1.9.3-p327/bin/ruby /rails_apps/cool_app/shared/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
Unexpected character '' (line: 13934, col: 1, pos: 403510)

Error
    at new JS_Parse_Error (<eval>:1720:22)
    at js_error (<eval>:1728:15)
    at parse_error (<eval>:1824:17)
    at next_token (<eval>:2070:17)
    at handle_slash (<eval>:2024:32)
    at Object.next_token [as input] (<eval>:2067:39)
    at next (<eval>:2175:37)
    at Object.semicolon [as 1] (<eval>:2221:38)
    at prog1 (<eval>:2770:28)
    at simple_statement (<eval>:2362:35)
  (in /rails_apps/cool_app/releases/20121128034720/app/assets/javascripts/application.js)
我想这意味着我有一个非法字符,它没有呈现在我的javascript迷宫中的某个地方,应该早点部署!但告诉我它在13934行的第1列似乎并不是特别有用。我怎么才能找到这个?这个错误消息毫无帮助,我在这里也注意到了很多关于这个主题的其他问题

编辑- 我不确定其重要性,但如果我在我的开发机器上运行RAILS\u ENV=development rake assets:precompile,任务似乎可以毫无怨言地执行。我的服务器是Ubuntu 12.04,我的开发机器是OSX 10.8。我现在对Javascript运行时的了解还不够,无法自己解决这个问题,但我正在寻找答案。

Hokay

我的头因为几个小时的敲击键盘而疼,但我解决了我的问题

首先,一些阅读表明丑陋是我错误的原因。我在config/production.rb中设置了config.assets.compress=false,果然能够预编译我的资产

不过我对此并不满意,因为我的Javascript文件是625kB,我真的希望压缩它,所以我查看了生成的application.js文件,找到了第13934行第1列所指的内容。原来是文件jquery.caret.1.02.js的第8行第1列,这是我正在使用的一个小jquery插件。第一行看起来是这样的

 (function($,len,createRange,duplicate){
在队伍前面有一个空格。我删除了那个空间,我怀疑它是一些不正确的非打印unicode字符,但我没有费心去查看它,设置config.assets.compress=true,然后重试,没有更多的错误消息!我的Javascript代码已经降到159kB


我希望有一天这会对某人有所帮助。

另一个原因可能是js文件中的html风格注释

这将产生

Unexpected character '<'

我只是想说出来,希望它能为别人节省一些时间和麻烦

关于这个问题,我也已经绞尽脑汁了一段时间了。对我来说,问题在于如何使用宝石美甲。当我删除uglifier并再次运行bundle exec rake assets:precompile时,我成功了


一般来说,这似乎是一个javascript压缩问题。通过设置config.assets.compress=false I disabled uglifier,查看您用于压缩JS的gems

Yes。不幸的是,它给您留下了大量的javascript文件,这可能是一个问题,也可能不是一个问题。你应该试着找出让人难看的代码,并加以纠正。