【问题标题】:rails execjs can't find node when using NVM使用NVM时rails execjs找不到节点
【发布时间】:2013-10-25 19:45:57
【问题描述】:

我正在使用 NVM 来管理系统上的 Node.js 版本,自从我安装了它后,我的 rails 应用程序停止工作。

ExecJS 似乎找不到节点运行时,报错:

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

需要采取哪些措施才能使 NVM 与 ExecJS 良好配合?

【问题讨论】:

  • 在运行您的 Rails 应用程序之前,您是否尝试运行 nvm use [YOUR_VERSION]
  • 您的 Rails 环境设置如何?如果您使用乘客,乘客使用的路径可能会缺少 nvm 使用的路径。在stackoverflow.com/questions/14187681/… 上查看我的回答,它可能会帮助您诊断问题。
  • @WagnerAndrade 谢谢! nvm use 为我工作。
  • @dolzenko,你可能想看看我的回答,nvm use 不会持续

标签: ruby-on-rails node.js execjs nvm


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在我们的例子中,我们以“普通”用户的身份使用命令运行 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 作为使用对象。

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 2012-12-20
      • 2021-08-02
      • 1970-01-01
      • 2016-02-25
      • 2017-12-21
      • 2019-11-21
      • 2018-04-11
      • 2014-12-10
      相关资源
      最近更新 更多