Say#hello中的ExecJS :: RuntimeError

时间:2013-08-15 04:27:01

标签: ruby-on-rails ruby-on-rails-3

对于该怎么做感到困惑。 RailsInstaller安装默认rails。

启动了一个新的演示应用。使用rails 3.2.14。

创建了一个控制器

rails generate controller Say hello goodbye

但是每当我导航到localhost时,都会返回execjs错误。

所以

http://localhost:3000/say/hello

我收到了

 ExecJS::RuntimeError in Say#hello

Showing c:/work/demo/app/views/layouts/application.html.erb where line #6 raised:


  (in c:/work/demo/app/assets/javascripts/say.js.coffee)

Extracted source (around line #6):

3: <head>
4:   <title>Demo</title>
5:   <%= stylesheet_link_tag    "application", :media => "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>
9: <body>

Rails.root: c:/work/demo

我一直试图寻找解决方案,但我认为唯一适用的解决方案并没有帮助。

我在下面添加了我的gemfile并进行了捆绑更新。没有成功。

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

我该怎么办?

修改

gemfile.lock http://pastebin.com/hGPJpxLp

5 个答案:

答案 0 :(得分:1)

查找ExecJS的runtimes.rb文件。

bundle show execjs

进行备份。打开runtimes.rb并进行修改。找到以行JScript = ExternalRuntime.new(开头的部分。在包含:command => "cscript //E:jscript //Nologo //U"的行上, - 仅删除//U。现在在包含:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE的行中 - 将UTF-16LE更改为UTF-8。保存更改。结果应该是:

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
)

重启rails s,问题应该解决。

答案 1 :(得分:1)

使用gem install节点。 我不知道为什么会有效,但它确实有效。

答案 2 :(得分:0)

确保您在资产组下有gem 'therubyracer'gem 'execjs',然后运行bundle install,您也可以尝试Node.js而不是execjs

答案 3 :(得分:0)

我也遇到了问题,在R&amp; D我安装了node.js(http://nodejs.org/download/)后问题就解决了。

答案 4 :(得分:0)

添加宝石宝石'execjs'为我做了。