Ruby on Rails ExecJS :: RuntimeError在Pages#home中

时间:2013-09-30 04:14:57

标签: javascript ruby-on-rails

我使用控制器生成了一个页面。但是当我去localhost时:3000 / pages / home。我收到了这个错误: Pages#home

中的ExecJS :: RuntimeError

@RyanBigg好的,这里是完整的错误代码:

ExecJS::RuntimeError in Pages#home

Showing C:/Users/Anishka/Desktop/test/myfirstapp/app/views/layouts/application.html.erb where line #6 raised:


  (in C:/Users/Anishka/Desktop/test/myfirstapp/app/assets/javascripts/pages.js.coffee)
Extracted source (around line #6):

3: <head>
4:   <title>Myfirstapp</title>
5:   <%= stylesheet_link_tag    "application", :media => "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>
9: <body>
Rails.root: C:/Users/Anishka/Desktop/test/myfirstapp

Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__601430158_32305500'
Request

Parameters:

None
Show session dump

Show env dump

Response

Headers:

None

我在这里找到了一个解决方案ExecJS::RuntimeError on Windows trying to follow rubytutorial

是:

  

适用于我们的修复:在有问题的系统上,找到ExecJS   runtimes.rb文件。看起来像这样。制作找到的文件的副本   用于备份。打开原始runtimes.rb进行编辑。找出   以JScript = ExternalRuntime.new(.In   该部分,包含:command =&gt; “cscript // E:jscript   // Nologo // U“, - 仅删除// U.然后在包含的行上   :encoding =&gt;带有// U的'UTF-16LE'#CScript返回UTF-16LE - 更改   UTF-16LE到UTF-8。将更改保存到文件。这一节   文件现在应该是:

     

JScript = ExternalRuntime.new(       :name =&gt; “JScript的”,       :command =&gt; “cscript // E:jscript // Nologo”,       :runner_path =&gt; ExecJS.root +“/ support / jscript_runner.js”,       :encoding =&gt; 'UTF-8'#CScript with // U返回UTF-16LE)接下来,停止然后重启你的Rails服务器并刷新你的页面   产生原始错误的浏览器。希望页面加载   现在没有错误。

但是runtimes.rb文件在哪里?我找不到那样的东西。我是铁杆初学者,感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要更改ExecJS用于cscript的命令行。这可以在gem的runtimes.rb文件中完成。对我来说,这位于:

  

C:\ Ruby200-64 \ lib中\红宝石\宝石\ 2.0.0 \宝石\ execjs-2.0.2 \ lib中\ execjs

当然,根据您的Ruby版本及其安装位置,这将有所不同。

我在a thread for an ExecJS issue中找到了此解决方法。

我改变了这个:

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
)

此屏幕截图也来自该主题:

screenshot