ExecJS 并且找不到 JavaScript 运行时

IT技术 ruby-on-rails-3.1 execjs javascript
2021-01-30 15:36:10

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

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

我需要做什么才能让它发挥作用?

6个回答

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

gem 'execjs'

gem 'therubyracer'

之后一切都应该好了。

对于 Rails 3.1 RC 6,您只需要指定 gem 'therubyracer'
2021-03-20 15:36:10
这是比安装 node.js 更好的解决方案。如果您要部署到远程服务器或与其他开发人员共享应用程序,让每个人都安装 node.js 比仅仅运行 bundle install 要痛苦得多,无论如何他们都会这样做。
2021-03-20 15:36:10
由于内存使用,Heroku 现在强烈反对therubyracer。我在我的开发机器上安装了 nodejs ( github.com/joyent/node/wiki/... ) 并从我的 gemfile 中取出了 therubyracer。另请参阅stackoverflow.com/questions/7092107/...
2021-04-01 15:36:10
创建新应用程序时,是否将这些 gem 包含在默认 Gemfile 中?
2021-04-07 15:36:10
这对我有用,rails 3.1rc4 和 Ubuntu 11.04(我第一次尝试使用 rails 3.1)。当我收到错误时,我试图生成一个脚手架。Rails 3.1 开箱即用,这仍然很蹩脚。
2021-04-10 15:36:10

Ubuntu 用户

我在 Ubuntu 11.04 上遇到了类似的问题。安装 Node.js修复了它。

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

sudo apt-get install nodejs

这将解决问题。


CentOS/RedHat 用户

sudo yum install nodejs
由于内存使用,Heroku 现在强烈反对therubyracer。我根据这个答案在我的开发机器上安装了 nodejs 并从我的 gemfile 中取出了 therubyracer。另请参阅stackoverflow.com/questions/7092107/...
2021-03-13 15:36:10
似乎 therubyracer 和 execjs 导致了 heroku 部署的问题,除非我错过了其他修改。这是首选的解决方案。
2021-03-17 15:36:10
@dwaynemac 我不同意。我宁愿运行时作为操作系统库存在(默认情况下与 Mac 和 Windows 一样),而不是将另一个 gem 添加到依赖项列表中。
2021-03-21 15:36:10
gem 'execjs' gem 'therubyracer' 这是一个比这个更好的解决方案。
2021-03-27 15:36:10
试过了。没有运气。请问是rvm冲突还是什么。其他人建议的所有内容对我都不起作用。
2021-04-08 15:36:10

在您的 Gem 文件中,写入

gem 'execjs'
gem 'therubyracer'

然后运行

bundle install

对我来说一切正常:)

你不需要添加'execjs'
2021-03-12 15:36:10
是的,在 rails 3.2.1 中,您必须仅使用 gem'therubyracer'
2021-03-16 15:36:10
感谢@manish nautiyal 和@Peter Mortensen。这个对我有用
2021-04-06 15:36:10

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

gem 'therubyracer', :platforms => :ruby

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

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

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

我在安装了 node.js 的 CentOS 服务器上遇到了错误。这让我过去了。谢谢!
2021-03-16 15:36:10
bundlergemfile 的新手册页bundler.io/v2.2/man/gemfile.5.html#PLATFORMS
2021-03-23 15:36:10
谢谢,这个使用 ruby​​ 1.9.3 和 Rails 3.2.1 的 rvm 安装在 Ubuntu Oneiric 上为我修复了
2021-04-02 15:36:10

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

gem 'therubyracer'

然后捆绑您的新依赖项:

$ bundle install
还在 Gemfile 中添加 gem 'execjs'
2021-03-20 15:36:10
execjs 现在已经包含在 rails 中了。仅在发布候选期间才需要。
2021-04-07 15:36:10