Rails - 找不到JavaScript运行时?

266

我在本地机器上使用 rails 3.1.0.rc4 创建了一个新的Rails项目,但是当我尝试启动服务器时出现以下错误:

找不到JavaScript运行时。请参见这里以获取可用运行时列表。 (ExecJS::RuntimeUnavailable)

注意:这不是关于Heroku的问题。


1
可能是重复的问题:ExecJS and could not find a JavaScript runtime - Lucio
14个回答

504

安装 JavaScript 运行时库,例如 Node.js 可以解决此问题

在 Ubuntu 上安装 Node.js,可以在终端中输入以下命令:

sudo apt-get install nodejs

在使用yum安装nodejs的系统上,可以在终端中键入以下命令:

yum -y install nodejs

15
对我来说也一样。sudo apt-get install nodejs - Hertzel Guinness
1
我现在建议采取这条路线。请参见上文。 - Michael Durrant
1
从答案中删除有关通过Ubuntu软件中心安装节点的说明,因为它不在那里(Ubuntu 12.04)。 - Michael Durrant
3
Ubuntu 64位系统安装therubyracer非常麻烦,即使是最新版本0.11.1也无法解决。这个答案对我很有帮助。 - Eduardo
在Windows WSL(Debian)上,正如TuxRacer所说,安装NodeJS解决了问题,谢谢。=> "sudo apt-get install nodejs"。真是费了好大劲才搞定。这个解决方案似乎比使用"therubyracer"更好。 - undefined
显示剩余2条评论

47

Michael在2011年12月28日发布的注意事项 - 我已将我对此(rubytheracer)的接受更改为上面的(nodejs),因为therubyracer存在代码大小问题。Heroku现在强烈不建议使用它。它会“工作”,但可能会有大小/性能问题。

如果您将诸如therubyracer之类的运行时添加到您的Gemfile并运行bundle,然后尝试启动服务器,它应该可以工作。

gem 'therubyracer'

编译Coffeescript和Uglifier都需要使用Javascript运行时。

更新,2011年12月12日:一些人发现rubytheracer存在问题(我认为主要是代码大小)。他们发现execjs(或nodejs)同样有效(如果不是更好),而且更小。

注意:从3.1开始,Coffeescript成为了标准。


3
它还可用于使用UglifyJS压缩JavaScript。请注意,执行这些任务的推荐方法是在开发环境中使用rake assets:precompile进行操作,然后将资产添加到您的存储库中;发布时,Rails 3.1实际上不需要JavaScript运行时。 - whitequark
1
我已将此标记为答案。这有点棘手,因为它并没有立即解决问题,而且我还尝试了使用3.0.9和3.0.4的新应用程序,但是遇到了(不同的)错误。最后,我又创建了一个新的应用程序 - 并且还使用了rails rc5,并添加了rubytheracer,然后进行了bunlde更新,最终我可以启动服务器了。谢谢Gazier! - Michael Durrant
1
顺便提一下,标准的Rails应用程序使用Uglifier,我认为这也需要。 - Michael Durrant
1
我认为一个好的做法是将它放在Gemfile文件的开发组下,类似于group :development do gem 'therubyracer' end - eveevans
@eveevans 运行时找不到错误。该资源已在生产环境中编译,因此therubyracer必须位于生产环境块下。 - lulalala
显示剩余3条评论

31
在你的 gem 文件中添加以下宝石。
gem 'therubyracer'
gem 'execjs'

并运行

bundle install

或者

安装 Node.js 以永久性地解决所有项目的问题。


1
这对我有用(Linux Mint 16),我认为在最新版本的Rails中可能会缺少一些依赖项。 - geminiCoder

16

sudo apt-get install nodejs 对我来说无效。为了使其起作用,我必须执行以下步骤:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

希望这能帮助到有和我一样问题的人。

对我来说不起作用,add-apt-repository ppa:chris-lea/node.js。 - jpganz18
@jpganz18 首先尝试这个命令: sudo apt-get install software-properties-common。如果这没能解决问题,您可以手动安装它:http://blog.anantshri.info/howto-add-ppa-in-debian/。 - Robin

7
在Windows平台上,我也遇到了这个问题。对我来说解决方案就是添加“

”。
C:\Windows\System32

路径(PATH)

然后重启电脑。


4

我在Windows机器上遇到了这个问题,安装node.js是最终解决方案。 在尝试了多种其他方法,包括尝试让'therubyracer'工作后,才发现这个方案。虽然node.js的Github建议在Windows上的安装仍不稳定,但http://nodejs.org/网站上有一个完美运行的Windows安装程序。


1

1
如果所有方法都失败了,您可以尝试以下操作:# aptitude install nodejs 作为root用户。您可以使用以下命令测试安装情况:# node -v。如果您想安装NPM,请参考以下链接。希望这有所帮助。

0
对于来自未来的人来说,当安装Rails 5.2.0时,上述错误会出现如下:
gem install rails -v 5.2.0

在Ubuntu 18.04上运行rake db:create:all命令。 解决方案是按照原始答案中所示安装Node.js。

0

我希望你已经预先安装了nodejs || nmv。

我的解决方案不需要gem设置或安装“使用sudo apt安装node”,当你已经有nvm时。

你只需要编辑RubyMine的DesctopEntry。为此,我们将采取以下小步骤:

  1. 进入 usr/share/applications
  2. 在任何编辑器中打开(我使用vim)Rubymine DesktopEntry vim RubyMine
  3. 编辑第6行(以Exec开头)。你应该在开头添加/bin/bash -i -c。所以你的行应该看起来像这样 Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. 完成!你很棒!

作为一个好处,所有环境变量现在都可用于RubyMine。所以你不必担心添加它们。


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