【问题标题】:Phusion Passenger and Rails app using NVM Could not find a JavaScript runtime使用 NVM 的 Phusion Passenger 和 Rails 应用程序找不到 JavaScript 运行时
【发布时间】:2017-01-05 00:00:46
【问题描述】:

我正在使用 Apache 和 Phusion Passenger 部署一个 Rails 应用程序 我已经使用此堆栈部署了应用程序,但现在我正在使用 NVM 安装节点 但是当我尝试加载站点时显示错误,查看日志会显示此错误:

找不到 JavaScript 运行时。有关可用运行时列表,请参阅 https://github.com/rails/execjs

在这台服务器上,我没有从 OS repos 安装 nodejs,并且查看乘客文档显示了有关 Passenger_nodejs 的信息,但这是来自 nginx。

这是我的 apache 配置文件:

服务器名称 yourserver.com

# Tell Apache and Passenger where your app's 'public' directory is
DocumentRoot /var/www/myproj/public

PassengerRuby /home/appuser/.rvm/gems/ruby-2.3.0/wrappers/ruby
PassengerNodejs /home/appuser/.nvm/versions/node/v6.9.2/bin/node


# Relax Apache security settings
<Directory /var/www/myproj/public>
  Allow from all
  Options -MultiViews
  # Uncomment this if you're on Apache >= 2.4:
  Require all granted
</Directory>

并继续显示该错误

从 OS repos 安装 nodejs 可以修复消息,并且应用程序可以正常工作,但这是因为它使用的是 OS 的 node 版本,但我想使用 NVM 版本。

【问题讨论】:

  • passenger_nodejsUbuntu 18.04.5nginx/1.14.0Phusion Passenger 6.0.6 中什么都不做。我必须使用@krsyoung 解决方案。

标签: javascript ruby-on-rails node.js apache nvm


【解决方案1】:

我有同样的问题,没有好的解决方案,但我确实发现我可以通过创建如下符号链接来解决我的问题:

ln -sf /home/deploy/.nvm/versions/node/v6.10.1/bin/node /usr/local/bin/node

如果在同一台服务器上有多个部署,则效果不佳,但我也找不到“正确”将 NVM 与Passenger / Rails 一起使用的方法。

【讨论】:

  • 拯救了我的一天。谢谢
  • 这对我有用,我最初根本没有这个 /usr/local/bin/node 。这是我的规格:Ubuntu 18.04 nvm 0.34.0 node 8.16.0
【解决方案2】:

另一种不需要写入 /usr/local/bin 的方法是使用 https://www.phusionpassenger.com/library/config/apache/reference/#passengernodejsPassengerNodeJs 指令。如果您在服务器上有其他应用程序使用不同版本的节点,这也适用。

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 2014-06-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多