0

对该怎么做感到困惑。默认 Rails 由 RailsInstaller 安装。

启动了一个新的演示应用程序。使用导轨 3.2.14。

创建了一个控制器

rails generate controller Say hello goodbye

但是,每当我导航到本地主机时,它都会返回一个 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

4

5 回答 5

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-16LEUTF-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,问题应该解决了。

于 2013-08-15T05:37:54.363 回答
1

使用 gem 安装节点。我不知道为什么这有效,但它有效。

于 2015-07-26T05:59:28.253 回答
0

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

于 2013-08-15T05:42:43.323 回答
0

我也遇到了一个问题,在我安装了 node.js ( http://nodejs.org/download/ ) 之后,问题就解决了。

于 2013-11-11T12:30:46.667 回答
0

添加 gem gem 'execjs' 为我做了。

于 2013-11-19T12:52:05.340 回答