【问题标题】:npm command is not found when ssh with bitbucket pipelines on shared hosting在共享主机上使用 bitbucket 管道进行 ssh 时找不到 npm 命令
【发布时间】:2019-12-29 19:17:49
【问题描述】:

我已经按照here 的描述安装了nodejs。

当我自己 ssh 到服务器时,一切正常。但是我创建了一个脚本来部署我的应用程序并通过 bitbucket 管道调用它。除了npm install,其他一切都正常(composer installphp artisan migrate 等)。错误信息是

./deploy: line 26: npm: command not found

在 bitbucket-pipelines.yml 我这样调用我的脚本:

- step:
    script:
      - ssh user@ip_address ./deploy

当我自己调用脚本时,一切正常。问题仅在于 bitbucket 管道。我不知道为什么会这样:(。

【问题讨论】:

  • ./deploy 是您自己的自定义脚本吗?另外,当您手动对远程机器执行ssh 时,您会运行什么命令?
  • 好的。我很想知道您使用什么确切的命令连接到那台机器,而不是你连接到那台机器之后运行的命令。
  • 请看,当您使用与安装二进制文件的用户不同的用户运行命令时,会发生找不到二进制文件的此类问题(在您的情况下为npm)。为了更清楚起见,bitbucket-pipelines.yml 中的ssh 命令中使用的用户,即ssh user@ip_address ./deploy 应该与使用 PuTTY 时用于连接的用户相同
  • 尝试在该用户的~/.bashrc 文件中配置npm 的路径

标签: node.js ssh bitbucket bitbucket-pipelines


【解决方案1】:

运行which composer 显示至少composer 命令没有从您的假定 位置(即~/composer 目录)获取。相反,它是在/opt/cpanel/composer/bin/composer 中找到的。

which npm 返回以下内容:

no npm in (/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin:/opt/cpanel/composer/bin:/home/handmast/.local/bin:/home/handmast/bin)

现在,由于您可以手动运行命令 npm,您只需了解运行 npm 的路径并确保将路径明确添加到用户的~/.bashrc 文件和事情应该可以正常工作。您需要这样做,因为根据您的观察,ssh 无法找到它。

export PATH=$PATH:/path/to/npm/binary

注意:为避免混淆,请记住,在将路径添加到二进制文件时,您只需将路径添加到 npm 所在的目录即可。不要在末尾添加npm。例如,以下是不正确的方式:

export PATH=$PATH:/home/handmast/bin/npm

正确的做法是这样的:

export PATH=$PATH:/home/handmast/bin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2021-11-21
    • 2022-11-02
    • 2011-04-26
    • 2021-04-25
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多