耙“资产:预编译”在部署到AWS时失败

Rau*_*eja 1 ruby-on-rails amazon-web-services ruby-on-rails-5

我尝试使用Capistrano将Rails应用程序部署到AWS。

运行后,cap production deploy我收到了“ Rake Aborted”消息,其中包含以下跟踪信息:

ExecJS::ProgramError: SyntaxError: Unexpected character '’' (line: 19420, col: 10, pos: 548371)

Error
    at new JS_Parse_Error (<eval>:3623:11948)
    at js_error (<eval>:3623:12167)
    at parse_error (<eval>:3623:14184)
    at Object.next_token [as input] (<eval>:3623:19902)
    at next (<eval>:3623:21852)
    at subscripts (<eval>:3624:1389)
    at expr_atom (<eval>:3623:31205)
    at maybe_unary (<eval>:3624:1752)
    at expr_ops (<eval>:3624:2523)
    at maybe_conditional (<eval>:3624:2615)
new JS_Parse_Error ((execjs):3623:11948)
js_error ((execjs):3623:12167)
parse_error ((execjs):3623:14184)
Object.next_token [as input] ((execjs):3623:19902)
next ((execjs):3623:21852)
subscripts ((execjs):3624:1389)
expr_atom ((execjs):3623:31205)
maybe_unary ((execjs):3624:1752)
expr_ops ((execjs):3624:2523)
maybe_conditional ((execjs):3624:2615)
/Users/apple/.rvm/gems/ruby-2.3.3/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:47:in `rescue in block in call'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:44:in `block in call'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:75:in `block in lock'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `Locker'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `lock'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:43:in `call'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/uglifier-3.0.4/lib/uglifier.rb:184:in `run_uglifyjs'
/Users/apple/.rvm/gems/ruby-2.3.3/gems/uglifier-3.0.4/lib/uglifier.rb:146:in `compile'
Run Code Online (Sandbox Code Playgroud)

这没有给我特定的语法错误位置,如何找到它?提前致谢!

Kha*_*ham 5

使用以下代码查找问题的更通用方法:

rails console

JS_PATH = "app/assets/javascripts/**/*.js"; 
Dir[JS_PATH].each do |file_name|
  puts "\n#{file_name}"
  puts Uglifier.compile(File.read(file_name))
end
Run Code Online (Sandbox Code Playgroud)

它将显示文件和Uglifier出现问题的行。