【问题标题】:ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (>) (line: 22342, col: 24, pos: 826182)ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (>) (line: 22342, col: 24, pos: 826182)
【发布时间】:2019-09-24 01:35:23
【问题描述】:

这里是相当新的 Rails 开发人员。我在尝试在 Heroku 上有效地部署我的 rails 应用程序时遇到此错误消息。我的猜测是 JS 资产预编译时会遇到一些语法错误。

我在 SO 上发现了类似的问题 here,但似乎仍未解决,我已尝试回复中的所有建议。

感谢任何帮助。这是我的问题的命令行跟踪:

ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (>) (line: 22342, col: 24, pos: 826182)

Error
    at new JS_Parse_Error (/tmp/execjs20161001-3-1oidjycjs:3623:11948)
    at js_error (/tmp/execjs20161001-3-1oidjycjs:3623:12167)
    at croak (/tmp/execjs20161001-3-1oidjycjs:3623:22038)
    at token_error (/tmp/execjs20161001-3-1oidjycjs:3623:22175)
    at unexpected (/tmp/execjs20161001-3-1oidjycjs:3623:22263)
    at expr_atom (/tmp/execjs20161001-3-1oidjycjs:3623:31244)
    at maybe_unary (/tmp/execjs20161001-3-1oidjycjs:3624:1752)
    at expr_ops (/tmp/execjs20161001-3-1oidjycjs:3624:2523)
    at maybe_conditional (/tmp/execjs20161001-3-1oidjycjs:3624:2615)
    at maybe_assign (/tmp/execjs20161001-3-1oidjycjs:3624:3058)
    at maybe_assign (/tmp/execjs20161001-3-1oidjycjs:3624:3232)
    at expression (/tmp/execjs20161001-3-1oidjycjs:3624:3384)
    at expr_list (/tmp/execjs20161001-3-1oidjycjs:3623:31548)
    at subscripts (/tmp/execjs20161001-3-1oidjycjs:3624:1461)
new JS_Parse_Error ((execjs):3623:11948)
js_error ((execjs):3623:12167)
croak ((execjs):3623:22038)
token_error ((execjs):3623:22175)
unexpected ((execjs):3623:22263)
expr_atom ((execjs):3623:31244)
maybe_unary ((execjs):3624:1752)
expr_ops ((execjs):3624:2523)
maybe_conditional ((execjs):3624:2615)
maybe_assign ((execjs):3624:3058)
maybe_assign ((execjs):3624:3232)
expression ((execjs):3624:3384)
expr_list ((execjs):3623:31548)
subscripts ((execjs):3624:1461)
/app/vendor/bundle/ruby/2.2.0/gems/execjs-2.7.0/lib/execjs/external_runtime.rb:39:in `exec'
/app/vendor/bundle/ruby/2.2.0/gems/execjs-2.7.0/lib/execjs/external_runtime.rb:21:in `eval'
/app/vendor/bundle/ruby/2.2.0/gems/execjs-2.7.0/lib/execjs/external_runtime.rb:46:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/uglifier-3.0.2/lib/uglifier.rb:181:in `run_uglifyjs'
/app/vendor/bundle/ruby/2.2.0/gems/uglifier-3.0.2/lib/uglifier.rb:143:in `compile'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/uglifier_compressor.rb:52:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/uglifier_compressor.rb:28:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:75:in `call_processor'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:56:in `call_processors'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/loader.rb:60:in `block in load'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/loader.rb:44:in `load'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/cached_environment.rb:47:in `yield'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/cached_environment.rb:47:in `load'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/base.rb:66:in `find_asset'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/manifest.rb:142:in `block in find'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:228:in `block in stat_tree'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:212:in `block in stat_directory'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:209:in `each'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:209:in `stat_directory'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:227:in `stat_tree'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:105:in `each'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:105:in `block in logical_paths'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:104:in `each'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:104:in `logical_paths'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-3.7.0/lib/sprockets/manifest.rb:140:in `find'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/railtie.rb:50:in `each'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/railtie.rb:50:in `map'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/railtie.rb:50:in `precompiled_assets'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/railtie.rb:35:in `asset_precompiled?'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/railtie.rb:251:in `block (3 levels) in <class:Railtie>'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:359:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:359:in `precompiled?'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:363:in `raise_unless_precompiled_asset'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:337:in `digest_path'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:325:in `asset_path'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:102:in `block in resolve_asset_path'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:242:in `block in resolve_asset'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:241:in `each'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:241:in `detect'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:241:in `resolve_asset'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:101:in `resolve_asset_path'
/app/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/helper.rb:79:in `compute_asset_path'
/app/vendor/bundle/ruby/2.2.0/gems/actionview-5.0.0.1/lib/action_view/helpers/asset_url_helper.rb:144:in `asset_path'
/app/app/models/group.rb:11:in `<class:Group>'
/app/app/models/group.rb:1:in `<top (required)>'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `block in require'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:380:in `block in require_or_load'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/concurrency/share_lock.rb:117:in `exclusive'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies/interlock.rb:11:in `loading'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:37:in `load_interlock'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:358:in `require_or_load'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:511:in `load_missing_constant'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:203:in `const_missing'
/app/db/seeds.rb:7:in `<top (required)>'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `block in load'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
/app/vendor/bundle/ruby/2.2.0/gems/railties-5.0.0.1/lib/rails/engine.rb:549:in `load_seed'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:268:in `load_seed'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/railties/databases.rake:196:in `block (2 levels) in <top (required)>'
/app/vendor/bundle/ruby/2.2.0/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

【问题讨论】:

  • 您的coffeescript无效时会出现这种exec js错误,您确定它正在开发中吗?
  • 感谢您的回复——我没有运行咖啡脚本。我只有一些 jquery 和 react 组件。绝对在本地运行正常。我只有在尝试在 heroku 中播种时遇到问题,我认为它在生产环境中运行?

标签: ruby-on-rails ruby git reactjs heroku


【解决方案1】:

我遇到了同样的问题,结果证明我使用的是 ES6 箭头函数。问题是,我的生产环境使用的 Sprockets 版本还不兼容 ES6。

我当时的解决方案是去掉箭头功能。另一种方法是使用sprockets-es6 或sprockets 的测试版之一。

【讨论】:

  • 我也在我的 Rails 4 项目中使用 ES6 语法。我尝试了 sprockets-es6,但这并没有帮助。正如这个答案中所建议的那样,我必须更新我的 Gemfile 并重新生成我的 Gemfile.lock 以使用 sprockets 的 beta 版本: gem 'sprockets', '~> 4.0.0.beta4'
【解决方案2】:

我有一个非常相似的问题,正如我提到的,因为我的 Rails 版本不支持 ES6。不过,升级链轮对我来说很有用。我最终做的是升级uglifier 和我的production.rb,改变,

config.assets.js_compressor = :uglifier

到

config.assets.js_compressor = Uglifier.new(harmony: true)

然后我的预编译就像一个魅力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多