Rails执行JS时使用NVM出现找不到Node的问题

9
我正在使用NVM来管理系统上的Node.js版本,自从我安装了它以后,我的Rails应用程序停止工作了。
ExecJS似乎无法找到Node运行时,导致出现以下错误:
Node.js (V8) runtime is not available on this system (ExecJS::RuntimeUnavailable)

如何使NVM与ExecJS兼容?需要执行哪些操作?


2
你是否尝试在运行Rails应用程序之前运行nvm use [YOUR_VERSION] - 19WAS85
你的Rails环境设置好了吗?如果你在使用passenger,那么nvm使用的路径可能会缺失于passenger所使用的路径。请查看我在https://dev59.com/3mzXa4cB1Zd3GeqPYuBF#24020042上的回答,这可能有助于你诊断问题。 - Travis Pessetto
@WagnerAndrade 谢谢!nvm use 对我有用。 - Ev Dolzhenko
@dolzenko,你可能想看一下我的答案,“nvm use”不会持久化。 - James L.
2个回答

3
我刚刚遇到了这个问题。基本上,NVM很好用,因为它允许您在一台计算机上安装和运行多个不同版本的Node而无需sudo特权。由于有多个版本,它不会自动为您加载一个版本到您的Shell中,您必须指定要使用哪个版本。nvm use default会将默认Node环境(代替default,您可以指定一个特定版本)加载到当前的Shell中,但是当关闭Shell时,此方法将停止工作。为了使更改永久生效,请使用nvm alias default node,欲知详情,请查看此问题

1
在我们的情况下,我们使用命令以“常规”用户身份运行Rails
bundle exec puma -C config/puma.rb

只要您通过 nvm 设置了一个“默认” node,那么就没问题了。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
nvm install v0.12.7
nvm alias default v0.12.7

下次您以该用户身份登录时,which node 应指示 nvm 下的路径:
~/.nvm/versions/node/v0.12.7/bin/node

同样,Rails将会选择使用node

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