Rails资源预编译神秘错误
我在资产预编译中遇到了一个非常棘手和持久的问题,我似乎无法自己解决这个问题。在没有错误的文件中编译总是失败。例如,以下错误位于只有注释的文件copies.js.coffee
中。如果我删除该文件,另一个文件将会出现错误。我所有资产文件的类型是us-ascii
- 在任何文件中都没有奇怪的字符。我正在使用Rails 3.1.3。我已经尝试了Ruby 1.9.2和1.9.3 - 没有区别。Rails资源预编译神秘错误
$ rake assets:precompile --trace
(in /cygdrive/c/Development/artwork2)
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/home/kari/.rvm/rubies/ruby-1.9.3-p0/bin/ruby.exe /home/kari/.rvm/gems/ruby-1.9.3-p0/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
湉異⁴牅潲㩲唠歮潮湷漠瑰潩⼢祣摧楲敶振唯敳獲欯牡⽩灁䑰瑡⽡潌慣⽬敔灭支數橣㉳〲ㄱⴲ㔵〲㐭瀶湸⸱獪•灳捥晩敩
(in /cygdrive/c/Development/artwork2/app/assets/javascripts/copies.js.coffee)
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:150:in `exec_runtime'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:27:in `block in exec'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:40:in `compile_to_tempfile'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:26:in `exec'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:18:in `eval'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:32:in `call'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/coffee-script-2.2.0/lib/coffee_script.rb:57:in `compile'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/tilt-1.3.3/lib/tilt/coffee.rb:46:in `evaluate'
这真的很烦人,我无法前进。我尝试了几乎所有我从这里和其他地方找到的一切。
另外:我已经在cygwin和Ubuntu下的rvm中都尝试了这两个。
问题出在咖啡栏上。我从资产中删除了所有生成的咖啡文件。他们只包含生成的评论,没有别的。之后,资产按原样编制。在某个地方肯定有一个坏的错误。花了几个小时。感谢理查德提出这种方法。
从外观上看,其中一个javascript文件在某些方面无效。
我假设一切都在开发模式下正常运行,这是一切功能在浏览器中正常运行?
如果是这样,代码在开发中正确运行,因为所有文件都以调试模式提供 - 它们不是连接或压缩的。编译时,首先将它们连接起来然后进行压缩。
该问题很可能是其中一个包含文件中缺少分号形式的语法错误。 JavaScript压缩机需要这些来确定一个代码块在哪里结束,另一个代码块从哪里开始。首先要检查的是插件定义的结尾。假设问题出现在一个文件中,则只能在一次删除一个文件,编译它直到它运行,并且你有罪魁祸首。
感谢您的回答。是的,一切都在开发中正确运行。今天晚些时候我会尝试你的建议。奇怪的是,没有更好的编译器/压缩器的CSS和JS。 – 2012-01-13 09:37:26
另一个补充:现在错误信息从UTF-16LE上的中文字符变成了“不完整”\ n“。同样,我所有的文件都是US-ASCII - 我用'file -i'检查过。 – 2012-01-12 18:09:58
又一个增加:切换到关闭没有区别。我遵循这里的说明:http://stackoverflow.com/questions/7877180/ror-precompiling-assets-fail-while-rake-assetsprecompile-on-basically-empty-a – 2012-01-12 18:38:23
一些进展:rails 3.2.0.rc2编译资产没有任何变化。不幸的是其他问题出现 – 2012-01-12 19:32:18