ExecJS和找不到JavaScript运行时

416
我正在尝试使用Mongoid / Devise Rails 3.1模板MongoidDevise),但是我一直收到一个错误,指出ExecJS无法找到JavaScript运行时。当我没有安装任何内容时,这是公平的,但是我已经尝试安装Node.jsMustangRuby Racer,但是没有任何作用。
我找不到JavaScript运行时。请参见sstephenson/ExecJS(GitHub)以获取可用运行时列表(ExecJS :: RuntimeUnavailable )。
我需要做什么才能使其工作?

4
顺便提一句,我正在使用Ubuntu Karmic操作系统。 - srboisvert
你应该真正考虑更改答案。Node.js的答案远不如execjs/rubyracer。 - Sean Dunford
3
rubyracer存在其他问题。如果可以避免,Heroku不再建议在Gemfile中包含它。https://devcenter.heroku.com/articles/rails-asset-pipeline#therubyracer我认为,在Ubuntu上安装正确的JavaScript运行时是解决这个问题的正确答案。 - M. Scott Ford
18个回答

4

我曾经在Gem文件中添加Ruby Racer来解决这个问题。但是,Node.js可以工作!


你如何将Node.js添加到Gemfile中?我没有找到一个Node.js的gem。 - Papouche Guinslyzinho

3
不要使用RubyRacer,因为它会占用过多内存。安装Node.js是一种更好的选择,正如一些人在这里建议的那样。
可供ExecJs库使用的可用运行时列表还记录了使用Node.js的方法。

https://github.com/sstephenson/execjs

所以,Node.js 不是过度设计,比使用 RubyRacer 更好的解决方案。

2

1

2022年在Mac上的答案很简单:

brew install nodejs

然后重新运行rails server


0

当我开始使用rbenv和Ruby 1.9.3时,我遇到了这个问题,而我的系统ruby是1.8.7。宝石在两个地方都安装了,但由于某种原因,rails脚本没有捡起来。但将"execjs"和"therubyracer"添加到Gemfile中就解决了问题。


0
使用 Ubuntu 18.04、Ruby 2.6.*、Rails 5 和 RubyMine 2019.1.1 调试 RubyMine,我遇到了同样的问题。为解决此问题,我从我的 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

0
在你的 gem 文件中 取消注释这一行。
19 # gem 'therubyracer', platforms: :ruby
然后运行 bundle install
你已经准备好工作了。 :)

0

我正在使用Rails 7和bootstrap 5.2.3 Gem。在生产环境中,它运行在基于Alpine Linux的Docker容器中。对于我的情况,仅安装nodejs和npm是不够的。我必须像这样安装yarn:

apk add --no-cache yarn

只有在那之后,生产环境中的错误信息才消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接