【问题标题】:Laravel Envoy can't detect node/npm on Ubuntu when installed with NVM (node version manager) bash: line 5: npm: command not found安装 NVM(节点版本管理器)bash:第 5 行:npm:找不到命令时,Laravel Envoy 无法在 Ubuntu 上检测节点/npm
【发布时间】:2021-04-03 20:36:40
【问题描述】:

我已经在 Ubuntu 18.04 上安装了带有 NVM 的 node/npm。我可以通过 ssh 进入服务器并运行 node -v (v13.9.0) 和 npm -v (v13.9.0),因此它们已安装并可由用户执行。

当我尝试通过 Laravel Envoy 部署工具执行此操作时,我收到以下错误:

bash: line 5: npm: command not found

我的 Envoy 脚本非常简单,如下所示:

@servers(['main' => ['deploy@**.***.**.**']])

@task('deploy', ['on' => 'main'])
    composer -V
    npm -v
@endtask

因此,由于某种原因,当 Envoy 登录服务器时,它无法访问 node/npm。系统上安装的所有其他东西,例如 php 和 composer 都可以正常工作。

Envoy 看不到 NVM 节点/npm 安装是否有任何原因? Envoy 是否没有使用我的部署用户登录?


当我检查它指向哪个 npm 时:

/home/deploy/.nvm/versions/node/v13.9.0/bin/npm

我已经尝试在我的 ssh shell 中直接调用它并得到正确的结果,npm 按预期运行。

然后我尝试将其添加到我的 Envoy 脚本中,如下所示:

@task('deploy', ['on' => 'main'])
    composer -V
    /home/deploy/.nvm/versions/node/v13.9.0/bin/node -v
@endtask

但是它返回错误:

‘node’: No such file or directory

有趣的是,我可以使用 Laravel Envoy 运行节点,方法是像 /home/deploy/.nvm/versions/node/v13.9.0/bin/node -v 那样直接引用二进制文件

【问题讨论】:

  • 我在让 Envoyer 使用 nvm 时遇到了同样的问题,尽管我已经以用户 forge(也是 Envoyer 用户)的身份直接在 VPS 上安装了 nvm。你有想过这个吗?

标签: node.js linux laravel npm laravel-envoy


【解决方案1】:

我在运行nvm use 时遇到了类似的问题,我遇到了同样的错误command not found。似乎没有从配置文件中激活 nvm(例如 ~/.bashrc)。我查看了 nvm README 并将源代码行复制到我的 Envoy 脚本中。

@task('deploy')
    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
    nvm use # Now works!
@endtask

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2015-12-21
    • 2012-02-26
    • 2021-08-04
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多