411

我正在尝试使用Mongoid / Devise Rails 3.1 模板MongoidDevise),但我不断收到一条错误消息,指出ExecJS找不到 JavaScript 运行时。当我没有安装任何东西时,这很公平,但我尝试安装Node.jsMustangRuby Racer,但没有任何效果。

我找不到 JavaScript 运行时。请参阅sstephenson/ExecJS (GitHub) 以获取可用运行时列表 ( ExecJS::RuntimeUnavailable)。

我需要做什么才能使它正常工作?

4

16 回答 16

445

Ubuntu Users

I'm on Ubuntu 11.04 and had similar issues. Installing Node.js fixed it.

As of Ubuntu 13.04 x64 you only need to run:

sudo apt-get install nodejs

This will solve the problem.


CentOS/RedHat Users

sudo yum install nodejs
于 2011-06-08T17:53:09.423 回答
445

只需在您的 gem 文件中添加ExecJSRuby Racerbundle install并运行。

gem 'execjs'

gem 'therubyracer'

之后一切都应该好了。

于 2011-06-12T17:49:14.293 回答
77

在您的 Gem 文件中,写入

gem 'execjs'
gem 'therubyracer'

然后运行

bundle install

一切对我来说都很好:)

于 2011-07-05T18:00:15.353 回答
48

我遇到了类似的问题:我的 Rails 3.1 应用程序在 Windows 上运行良好,但在 Linux 上运行时出现与 OP 相同的错误。在两个平台上都对我有用的修复是将以下内容添加到我的Gemfile

gem 'therubyracer', :platforms => :ruby

诀窍是知道这:platforms => :ruby实际上意味着仅将此 gem 与“C Ruby (MRI) 或 Rubinius,但不是 Windows”一起使用。

其他可能的值手册页:platforms中描述。bundler

仅供参考:Windows 有一个execjs可以定位的内置 JavaScript 引擎。在 Linux 上没有内置的,尽管可以安装几个可用的。 therubyracer是其中之一。其他列在execjs README.md中。

于 2011-08-10T00:55:50.413 回答
36

将以下 gem 添加到我的 Gemfile 解决了这个问题:

gem 'therubyracer'

然后捆绑您的新依赖项:

$ bundle install
于 2011-07-09T07:48:48.227 回答
17

另一种方法是在没有包含您没有的东西的 gem 组的情况下捆绑。

这样做:

bundle install --without assets

你根本不需要修改 Gemfile,当然前提是你没有做资产链的东西——这通常适用于非开发环境。Bundle 会记住 .bundle/config 文件中的“--without”设置。

于 2011-12-09T01:15:34.280 回答
7

在您的 gem 文件中添加以下 gem

gem 'therubyracer'
gem 'execjs'

并运行

bundle install

你完成了:)

于 2012-09-13T06:58:28.710 回答
6

For amazon linux(AMI):

sudo yum install nodejs npm --enablerepo=epel
于 2015-08-03T01:59:51.147 回答
5

我有同样的错误,但只在我的登台服务器上而不是我的生产环境上。nodejs 已经安装在两个环境中。

通过键入:

which node

我发现 node 命令位于:生产时的 /usr/bin/node 中,但在暂存时位于:/usr/local/bin/node 中。

在登台上创建符号链接后,即:

sudo ln -s /usr/local/bin/node /usr/bin/node

然后该应用程序在暂存中工作。

不吵不闹。

于 2015-05-11T02:42:36.540 回答
4

我曾经将Ruby Racer添加到 Gem 文件以修复它。但是,嘿,Node.js有效!

于 2011-09-02T20:31:29.653 回答
3

不要使用 RubyRacer,因为它对内存不好。按照这里的一些人的建议安装 Node.js 是一个更好的主意。

ExecJs 库可以使用的可用运行时列表还记录了 Node.js 的使用

https://github.com/sstephenson/execjs

因此,Node.js 并不是一个矫枉过正的解决方案,而且比使用 RubyRacer 更好的解决方案。

于 2013-06-29T20:01:05.093 回答
2

仅供参考,这为我解决了问题......这是一个路径问题: http://forums.freebsd.org/showthread.php?t= 35539

于 2013-03-08T16:34:34.207 回答
1

node通过nvm安装并在使用 Capistrano 部署时遇到了这个问题。Capistrano 没有自动加载 nvm,因为它以非交互方式运行。

要修复,只需将 nvm 添加到您的行移到~/.bashrc顶部即可。该文件将如下所示:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
于 2020-03-18T16:29:25.263 回答
0

在您的 gem 文件中取消注释此行。

19 # gem 'therubyracer', 平台: :ruby

并运行捆绑安装

你已经准备好工作了。:)

于 2014-05-05T14:24:56.580 回答
0

当我开始将 rbenv 与 Ruby 1.9.3 一起使用时,我开始遇到这个问题,因为我的系统 ruby​​ 是 1.8.7。gem 安装在两个地方,但由于某种原因,rails 脚本没有选择它。但是将“execjs”和“therubyracer”添加到 Gemfile 就可以了。

于 2013-03-26T08:19:29.517 回答
0

尝试使用 Ubuntu 18.04、Ruby 2.6.*、Rails 5 和 RubyMine 2019.1.1 在 RubyMine 中调试时,我遇到了同样的问题。

为了解决这个问题,我取消了我的mini_racer行的注释Gemfile,然后运行bundle

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

改成:

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby
于 2019-05-19T17:53:32.907 回答