0

我在资产预编译中遇到了一个非常讨厌且持续存在的问题,我自己似乎无法解决。编译总是在一些没有错误的文件中失败。例如,下面的错误出现在copies.js.coffee只有注释的文件中。如果我删除该文件,另一个文件将出现错误。我所有资产文件的类型是us-ascii- 任何文件中都没有奇怪的字符。我正在使用 Rails 3.1.3。我用 Ruby 1.9.2 和 1.9.3 都试过了——没有区别。

$ 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 下都试过这个。

4

2 回答 2

2

从外观上看,其中一个 javascript 文件在某种程度上是无效的。

我假设一切都在开发模式下正常运行,也就是说一切都在浏览器中正常运行?

如果是这样,代码在开发中正确运行,因为所有文件都在调试模式下提供 - 它们没有连接或压缩。编译时,它们首先被连接,然后被压缩。

该问题可能是其中一个包含的文件中的语法错误,其形式为缺少分号。Javascript 压缩器需要这些来确定一个代码块的结束位置和另一个代码块的开始位置。首先要检查的是插件定义的结尾。假设问题仅在一个文件中,您一次只能删除一个文件,编译它直到它运行,您就有了罪魁祸首。

于 2012-01-13T09:10:02.900 回答
1

问题出在咖啡导轨上。我从资产中删除了所有生成的咖啡文件。它们只包含生成的评论,没有其他内容。之后,资产按应有的方式编译。某处一定有一个坏错误。花了几个小时。谢谢理查德建议的方法。

于 2012-01-13T19:48:59.000 回答