BitBucket管道显示npm:找不到命令

时间:2020-11-05 05:25:25

标签: javascript node.js npm ssh bitbucket-pipelines

使用位存储桶scp管道将代码部署到我的服务器后,我正在使用另一个管道来运行脚本来安装节点模块并启动节点服务器,但是管道的结果为失败状态并显示为

./ server-run.sh:第1行:npm:找不到命令 ./server-run.sh:第2行:pm2:找不到命令

以下是我的yml文件

image: node:10.15.3

pipelines:
  custom:
    test:
    - step:
        caches:
          - node
        script: # Modify the commands below to build your repository.
            - pipe: atlassian/scp-deploy:0.3.3
              variables:
                USER: $USER
                SERVER: $SERVER
                REMOTE_PATH: '/var/www/stockTest/server'
                LOCAL_PATH: 'server/*'
    server-start:
    - step:
        caches:
          - node
        script:
          - ssh $USER@$SERVER "cd /var/www/stockTest/server && ./server-run.sh"
            

server-run.sh

npm i
pm2 start server-start.js --name stockTest

3 个答案:

答案 0 :(得分:0)

由于未安装pm2,因此必须首先安装pm2。

尝试执行pm2之前

npm i -g pm2

您可以给

npx pm2 start server-start.js --name stockTest

答案 1 :(得分:0)

我遇到了完全相同的问题。 所以我对我的文件有这些命令:

whoami
which npm

哪个输出:

LifecycleEvent - ApplicationStart
Script - cicd/development/scripts/start_server.sh
[stdout]ec2-user
[stderr]which: no npm in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

所以它找不到 npm 但不是因为它不是正确的用户,所以我做了一个 :

$ which npm
~/.nvm/versions/node/v15.12.0/bin/npm

后来才明白是npm安装的地方造成的。
所以我只是下载二进制文件并将其放入 /usr/local/lib/nodejs

然后它就像一个魅力。

答案 2 :(得分:0)

1> 在您的服务器终端中运行 echo $PATH

这将给出以下输出 /home/ubuntu/.nvm/versions/node/v16.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin :/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

2> 现在打开 nano /etc/environment 并粘贴如下所示的路径

 PATH="/home/ubuntu/.nvm/versions/node/v16.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

这肯定会解决您的问题。