【问题标题】:Rails 5 - ExecJS::RuntimeErrorRails 5 - ExecJS::RuntimeError
【发布时间】:2018-04-10 16:09:31
【问题描述】:

我的项目运行良好,我正在调整使用 chartkick 制作的图表并使用 ActionCable 更新 HTML 徽章,突然我收到此错误:

页面中的 ExecJS::RuntimeError#create_session

Showing B:/.../app/views/layouts/application.html.erb where line #7 raised:

SyntaxError: [stdin]:14:32: unexpected end of input
Extracted source (around line #7):              
5    <%= csrf_meta_tags %>
6    <%= javascript_include_tag "https://www.gstatic.com/charts/loader.js" %>
7    <%= javascript_include_tag 'application', 'chartkick' %>
8     <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
9     <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
10  </head>

Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:7:in `_app_views_layouts_application_html_erb___430303067_44605968'
app/controllers/pages_controller.rb:145:in `render_page'
app/controllers/pages_controller.rb:46:in `create_session'

我搜索了一下,发现这个错误意味着我的系统上有一个problem with the JavaScript runtime(我使用的是 Windows 10)。


我尝试过的事情:

  1. 删除 //= require_tree 。来自 application.js - 对我不起作用,因为我的所有 JavaScript 代码都不再起作用(我的项目使用 ActionCable)
  2. 修改 C:\RailsInstaller\Ruby2.3.​​0\lib\ruby\gems\2.3.0\gems\execjs-2.7.0\lib\execjs\ ru‌​ntimes.rb 为 @ 987654322@ - 没修好
  3. 添加 'therubyracer' gem - 无法安装,这是我得到的error message。这是完整的错误信息,然后就完成了。据我所知,它无法安装,因为没有安装 Python 2?
  4. 按照here 的建议,我添加了 gem 'coffee-script-source' - 没有修复它,现在我无法删除它,因为突然其他 gem 依赖它?很奇怪。
  5. 自从我开始这个项目以来,我已经安装了 Node.js,所以不可能。

我使用的是 Windows 10、Ruby 2.3.0 和 Rails 5.0.2,这是我目前的Gemfile。

这是我的 application.js:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require chartkick
//= require_tree .

我知道有很多关于这个问题的帖子,但是在尝试了几乎所有的东西之后,我有点迷失了......请帮忙! =)

【问题讨论】:

  • 我想你的咖啡有问题。尝试一一删除以找出可能的问题。
  • 天哪,我找到了——非常感谢@Ziyan! =)
  • 很高兴听到,很高兴你想通了。如果您对 Rails 很认真,我建议您不要使用 Windows。 Ubuntu 是进入 Linux 世界的好地方。

标签: javascript ruby-on-rails ruby ruby-on-rails-5 chartkick


【解决方案1】:

在Ziyan Junaideens指针之后,我搜索了我所有的CoffeeScript文件,最后发现我留下了一个未完成的方法调用......>_

received: (data) ->
    App.online_status.  #<--- right here

那么我学到了什么?当你累得要死的时候不要编程——否则你会花一整天时间寻找愚蠢的错误! ^^*

【讨论】:

    【解决方案2】:

    如果你有 gem # gem 'therubyracer', :platform=>:ruby 更改为 gem 'mini_racer'

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 1970-01-01
      • 2015-08-11
      • 2016-08-19
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多