使用NVM时,rails execjs找不到节点

我正在使用NVM来pipe理系统上的Node.js版本,而且由于我安装了它,我的rails应用程序停止工作。

ExecJS似乎无法find节点运行时,给出的错误:

Node.js (V8) runtime is not available on this system (ExecJS::RuntimeUnavailable) 

需要采取什么行动才能使NVM与ExecJS良好地发挥作用?

在我们的例子中,我们使用命令将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 

下次以该用户身份login时, which node应该指示nvm下的path:

 ~/.nvm/versions/node/v0.12.7/bin/node 

同样的,Rails会select那个node作为使用的node

刚刚碰到这个问题我自己。 基本上,NVM是很好的,因为它允许您在一台计算机上安装并运行多个不同版本的节点,而无需使用sudo权限。 由于有多个版本,因此它不会自动在您的shell中加载一个版本,您必须指定要使用的版本。 nvm use default加载默认的Node环境(而不是默认的,你可以指定一个特定的版本)到当前的shell,但是当shell被closures的时候这个会停止工作。 要使更改永久化,请使用nvm alias default node ,查看此问题以获取更多信息。