我刚刚从Rails 3.2.10升级到3.2.11,并且没有对我的应用程序进行任何其他更改。
突然间,我的网站无法加载 - 并向我提供错误消息:
ExecJS::RuntimeError in Static_pages#home
是否有人知道为什么Rails 3.2.11中的更改会导致此问题?
ExecJS::RuntimeError in Static_pages#home
Showing C:/Sites/av_reports/app/views/layouts/application.html.erb where line #11 raised:
(in C:/Sites/av_reports/app/assets/javascripts/password_resets.js.coffee)
Extracted source (around line #11):
8: <meta name="author" content="">
9:
10: <%= stylesheet_link_tag "application", :media => "all" %>
11: <%= javascript_include_tag "application" %>
12: <%= csrf_meta_tags %>
13: <%= render 'layouts/shim' %>
14: </head>
我的/app/assets/javascripts/password_resets.js.coffee文件包含3行注释掉的文本,所以我猜这不是问题所在。
宝石依赖性或类似的东西是否有变化 - 这可能导致问题?
修改
我的application.js文件显示为:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
答案 0 :(得分:4)
所以......显然这根本不是Rails 3.2.11升级问题。潜在的问题是ExecJS在Windows中的工作方式。我目前正在Windows 8上运行我的开发环境。
在升级到Rails 3.2.11之前,上述错误消息将显示在服务器日志中,但它并未停止服务器。在Rails 3.2.11中,页面将不再加载。
解决方案是编辑Ruby1.9.3 \ lib \ ruby \ gems \ 1.9.1 \ gems \ execjs-1.4.0 \ lib \ execjs \ runtimes.rb文件:
(原始非工作代码):
JScript = ExternalRuntime.new(
:name => "JScript",
:command => "cscript //E:jscript //Nologo //U",
:runner_path => ExecJS.root + "/support/jscript_runner.js",
:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
)
(更新的工作代码):
JScript = ExternalRuntime.new(
:name => "JScript",
:command => "cscript //E:jscript //Nologo",
:runner_path => ExecJS.root + "/support/jscript_runner.js",
:encoding => 'UTF-8' # CScript with //U returns UTF-16LE
)
感谢评论主题:https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
以及https://stackoverflow.com/a/14119187/1757424的讨论,以获取有关此问题的帮助。
答案 1 :(得分:0)
我有一些问题,但我使用的是Ruby2.0.0
解决方案是编辑Ruby2.0.0 \ lib \ ruby \ gems \ 2.0.0 \ gems \ execjs-2.2.1 \ lib \ execjs \ runtimes.rb