【问题标题】:Rails Assets Not Compiling In Production But Compiling In DevelopmentRails 资产不在生产环境中编译,而是在开发环境中编译
【发布时间】:2017-09-14 17:05:13
【问题描述】:

我正在运行带有 uglifier >=1.3 的 ruby​​ 2.4.0 和 rails 5。我的代码在本地工作,并将在开发模式下编译。但是,当我尝试使用 Capistrano 将其部署到 DigitalOcean 时,我在预编译资产时遇到错误。

这里是本地重现的错误:

RAILS_ENV=production rake assets:clean assets:precompile
rake aborted!
ExecJS::RuntimeError: SyntaxError: Unexpected token: name (parent)
JS_Parse_Error.Object.defineProperty.get ((execjs):3538:621)

有什么想法吗? 这是资产的输出:precompile in production。

** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Execute assets:precompile
rake aborted!
ExecJS::RuntimeError: SyntaxError: Unexpected token: name (parent)
JS_Parse_Error.Object.defineProperty.get ((execjs):3538:621)
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:47:in `rescue in block in call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:44:in `block in call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:75:in `block in lock'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `Locker'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `lock'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:43:in `call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:195:in `run_uglifyjs'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:157:in `compile'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:53:in `call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:28:in `call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in `find_asset'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:142:in `block in find'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:228:in `block in stat_tree'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:212:in `block in stat_directory'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `stat_directory'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:227:in `stat_tree'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `block in logical_paths'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `logical_paths'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:140:in `find'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:185:in `compile'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb:147:in `with_logger'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/Users/Joseph/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:108:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:77:in `run'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
/Users/Joseph/.rvm/gems/ruby-2.4.0/bin/rake:22:in `load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/bin/rake:22:in `<main>'
V8::Error: Unexpected token: name (parent)
at js_error (<eval>:3623:12181)
at croak (<eval>:3623:21897)
at token_error (<eval>:3623:22034)
at unexpected (<eval>:3623:22122)
at semicolon (<eval>:3623:22614)
at simple_statement (<eval>:3623:25718)
at <eval>:3623:23580
at <eval>:3623:22787
at block_ (<eval>:3623:27800)
at ctor.body (<eval>:3623:27403)
at function_ (<eval>:3623:27499)
at expr_atom (<eval>:3623:30759)
at maybe_unary (<eval>:3624:1514)
at expr_ops (<eval>:3624:2322)
at maybe_conditional (<eval>:3624:2414)
at maybe_assign (<eval>:3624:2815)
at expression (<eval>:3624:3128)
at expr_list (<eval>:3623:31239)
at subscripts (<eval>:3624:1223)
at subscripts (<eval>:3624:859)
at subscripts (<eval>:3624:1165)
at expr_atom (<eval>:3623:30896)
at maybe_unary (<eval>:3624:1514)
at expr_ops (<eval>:3624:2322)
at maybe_conditional (<eval>:3624:2414)
at maybe_assign (<eval>:3624:2815)
at expression (<eval>:3624:3128)
at simple_statement (<eval>:3623:25701)
at <eval>:3623:23580
at <eval>:3623:22787
at block_ (<eval>:3623:27800)
at ctor.body (<eval>:3623:27403)
at function_ (<eval>:3623:27499)
at expr_atom (<eval>:3623:30759)
at maybe_unary (<eval>:3624:1514)
at expr_ops (<eval>:3624:2322)
at maybe_conditional (<eval>:3624:2414)
at maybe_assign (<eval>:3624:2815)
at expression (<eval>:3624:3128)
at expr_list (<eval>:3623:31239)
at subscripts (<eval>:3624:1223)
at subscripts (<eval>:3624:859)
at subscripts (<eval>:3624:1165)
at expr_atom (<eval>:3623:30896)
at maybe_unary (<eval>:3624:1514)
at expr_ops (<eval>:3624:2322)
at maybe_conditional (<eval>:3624:2414)
at maybe_assign (<eval>:3624:2815)
at expression (<eval>:3624:3128)
at simple_statement (<eval>:3623:25701)
at <eval>:3623:23580
at <eval>:3623:22787
at <eval>:3624:3503
at parse (<eval>:3624:3743)
at parse (<eval>:3959:22)
at uglifier (<eval>:4007:13)
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:45:in `block in call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:75:in `block in lock'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `Locker'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `lock'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:43:in `call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:195:in `run_uglifyjs'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:157:in `compile'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:53:in `call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:28:in `call'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in `find_asset'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:142:in `block in find'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:228:in `block in stat_tree'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:212:in `block in stat_directory'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `stat_directory'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:227:in `stat_tree'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `block in logical_paths'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `logical_paths'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:140:in `find'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:185:in `compile'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb:147:in `with_logger'
/Users/Joseph/.rvm/gems/ruby-2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/Users/Joseph/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:108:in `each'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/lib/rake/application.rb:77:in `run'
/Users/Joseph/.rvm/gems/ruby-2.4.0@global/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
/Users/Joseph/.rvm/gems/ruby-2.4.0/bin/rake:22:in `load'
/Users/Joseph/.rvm/gems/ruby-2.4.0/bin/rake:22:in `<main>'

【问题讨论】:

  • RAILS_ENV=production rake assets:precompile --trace 的输出?听说过 ES6 会导致此类问题。 sprockets 的版本是什么?
  • 我一直在阅读它。在发布之前,我删除了我认为可能是 ES6 的 gem,包括 Bootstrap 4 和 JQuery3。
  • 如果对@kiddorails 有帮助,我发布了输出。
  • 尝试更新到新的 sprockets 版本gem 'sprockets', '4.0.0.beta5' 并再次运行编译。将帮助您确定 es6 是否确实是 sprockets 的问题
  • 您能否通过取出文件并重新运行编译来缩小导致问题的 JS 文件的范围?二进制搜索方法可能是最快的 - 即删除一半的文件,测试编译,如果编译仍然失败,则删除一半的剩余文件,等等。

标签: ruby-on-rails ruby digital-ocean uglifyjs


【解决方案1】:

原来我的 JS 不是很干净。我有一些代码 let parent... 而它应该是 var parent。

感谢您的帮助。

【讨论】:

  • 最佳策略是逐个删除 JS 文件以缩小问题发生的范围。干杯@brian。
【解决方案2】:

尝试将以下行添加到您的 Gemfile:

group :assets do
 gem 'uglifier'
end

将该宝石移出资产组

【讨论】:

  • 同样的错误 - 我安装了 gem 'uglifier', '>= 1.3.0'。
  • 您是否从其他组中删除了 gem 'uglifier', '>= 1.3.0' 并放入 :assets 组?在部署之前尝试运行捆绑安装和捆绑更新
  • 是的 - 我在尝试之前删除了 gem 'uglifier', '>= 1.3.0'。没有成功。
猜你喜欢
  • 2012-04-02
  • 1970-01-01
  • 2020-02-19
  • 2015-12-14
  • 2012-02-28
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多