我试图使用蒙古/设计Rails 3.1模板(蒙古和设计),我一直得到一个错误说明ExecJS找不到JavaScript运行时。公平的时候,我没有安装任何,但我已经尝试安装Node.js, Mustang和Ruby Racer,但没有工作。

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

我需要做什么才能让它工作?


Ubuntu用户

我使用的是Ubuntu 11.04,遇到了类似的问题。安装Node.js解决了这个问题。

从Ubuntu 13.04 x64开始,你只需要运行:

sudo apt-get install nodejs

这样问题就解决了。


CentOS / RedHat用户

sudo yum install nodejs

只需在gem文件中添加ExecJS和Ruby Racer,然后运行bundle install即可。

gem 'execjs'

gem 'therubyracer'

之后一切都会好起来的。


在Gem文件中,写入

gem 'execjs'
gem 'therubyracer'

然后运行

bundle install

对我来说一切都很好:)


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

gem 'therubyracer'

然后捆绑你的新依赖项:

$ bundle install

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

gem 'therubyracer', :platforms => :ruby

诀窍是知道:平台=>:ruby实际上意味着只使用这个宝石与“C ruby (MRI)或Rubinius,但不是Windows。”

平台的其他可能值在捆绑包手册页中描述。

供你参考:Windows有一个内置的JavaScript引擎,execjs可以找到它。在Linux上没有内置的,尽管有几个可用的可以安装。Therubyracer就是其中之一。其他的在execjs README.md中列出。


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


另一种方法是不使用包含您没有的东西的gem组进行捆绑。

所以做的事:

bundle install --without assets

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


在宝石文件中添加以下宝石

gem 'therubyracer'
gem 'execjs'

和运行

bundle install

你完成了:)


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


当我开始用Ruby 1.9.3使用rbenv时,我开始遇到这个问题,而我的系统Ruby是1.8.7。gem安装在两个地方,但由于某种原因,rails脚本没有拾取它。但是在Gemfile中添加“execjs”和“therubyracer”就成功了。


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

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

https://github.com/sstephenson/execjs

所以,Node.js并不是一个多余的,而且比使用RubyRacer更好的解决方案。


在你的gem文件中 取消这一行的注释。

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

和运行 包安装

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


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

通过键入:

which node

我发现节点命令位于:/usr/bin/node的生产环境中 但是:/usr/local/bin/node。

在分段上创建符号链接后,即:

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

然后应用程序在分段中工作。

不乱不闹。


对于amazon linux(AMI):

sudo yum install nodejs npm --enablerepo=epel

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

为了解决这个问题,我从我的Gemfile中取消了mini_racer行,然后运行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

我通过nvm安装node,在使用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

2022年Mac的答案很简单:

编译安装nodejs

然后重新运行rails服务器。


我使用Rails 7和引导5.2.3 Gem。在生产环境中,它运行在基于Alpine Linux的Docker容器中。对于我来说,仅仅安装nodejs和npm是不够的。我必须像这样安装纱线:

apk add --no-cache yarn

在此之后,错误消息才在生产中消失。