0

我在带有 ubuntu 16.04 + nginx +passenger5 + ruby​​ 2.5.0(通过 rbenv)+ nodejs 9.4 的服务器上使用 capistrano 部署了一个 Ruby on Rails 应用程序。由于某些未知原因,当我打开网站时,乘客返回错误: There was an error while trying to load the gem 'bootstrap'. Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes."

如前所述,我已经安装了 nodejs,如果我尝试通过 ruby​​ 控制台(irb)运行第一个 ExecJS 示例,它可以正常工作: require "execjs" ExecJS.eval "'red yellow blue'.split(' ')'"

如果我通过将“therubyracer”gem 添加到 Gemfile 来更改 javascript 运行时,则项目可以正常工作。任何想法为什么 ExecJS 自动检测缺少 NodeJS?

提前致谢。

4

1 回答 1

1

由于某种原因,nginx/passenger 找不到正确的 nodejs 路径。我已经通过将它添加到我的 nginx 配置( /etc/nginx/nginx.conf )的顶部来修复这个问题: end PATH;

检查:Rails/Passenger/Node.js:ExecJS“找不到 JavaScript 运行时”以获取更多信息。

另外,确保执行 nginx 的用户(www-data?)能够运行 node.js。

于 2018-01-17T17:25:55.593 回答