ExecJS和找不到JavaScript运行时

我试图使用Mongoid / design Rails 3.1模板 (< a href = " http://mongoid.org/ " > Mongoid < / >< a href = " https://github.com/plataformatec/devise " >设计< / >),我不断得到一个错误,指出ExecJS找不到JavaScript运行时。公平的时候,我没有任何安装,但我已经尝试安装node . js野马Ruby赛车,但什么都没有工作。

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

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

268468 次浏览

Ubuntu用户

我使用的是Ubuntu 11.04,遇到了类似的问题。安装node . js修复了它。

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

sudo apt-get install nodejs

这样问题就解决了。


CentOS / RedHat用户

sudo yum install nodejs

只要在gem文件中添加ExecJSRuby赛车,然后运行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

诀窍在于知道:platforms => :ruby实际上意味着只能在C Ruby (MRI)或Rubinius上使用此宝石,而不能在Windows上使用。

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

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

我曾经将Ruby赛车添加到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 < / p >

当我开始用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

< p >和运行 包安装< / p >

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

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

通过键入:

which node

我发现node命令位于:/usr/bin/node上 但是:/usr/local/bin/node in staging.

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

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的答案很简单:

brew install nodejs

然后重新运行rails server