Github操作错误:bash:第3行:npm:找不到命令

时间:2020-07-12 15:36:33

标签: node.js git npm continuous-integration github-actions

我正在尝试通过ssh从github将nodejs应用程序部署到远程ubuntu服务器。这是我的main.yml:

name: Node Github CI

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Node Js
      uses: actions/setup-node@v1
       
    - name: SSH and deploy node app
      uses: appleboy/ssh-action@master        
      with:
        host: ${{ secrets.SERVER_IP }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SERVER_KEY }}
        script: |
          service myservice stop
          cd leancrm-backend
          git pull git://myuser@github.com/mycmp/myapp-backend.git master
          npm install
          service myservice start

运行此命令时,出现此错误:

======CMD======
service myservice stop
cd myapp-backend
git pull git://myuser@github.com/mycmp/myapp-backend.git master
npm install
service myservice start

======END======
err: fatal: Unable to look up myuser@github.com (port 9418) (Name or service not known)
err: bash: line 3: npm: command not found
==============================================

截屏: enter image description here

5 个答案:

答案 0 :(得分:1)

您的第一步

name: Node Js
      uses: actions/setup-node@v1

在GitHub构建运行器上设置Node.js。但是,您的第二步...

 name: SSH and deploy node app
      uses: appleboy/ssh-action@master        
      with:
        host: ${{ secrets.SERVER_IP }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SERVER_KEY }}
        script: |
          service myservice stop
          cd leancrm-backend
          git pull git://myuser@github.com/mycmp/myapp-backend.git master
          npm install
          service myservice start

... SSH到您的服务器,然后运行脚本说明那里。您还尝试在此处签出您的源代码回购。

您可能想做的是在GitHub构建运行器上查看您的回购...

- name: Checkout repo
  uses: actions/checkout@v2

..然后在此处运行npm install,然后将scp的输出发送到您的服务器,最后ssh到该计算机并重新启动服务。

答案 1 :(得分:1)

由于您已连接到服务器,所以我假设您已经在此存储库,因此只需要执行git pull。

还应该在脚本的开头添加以下行:

export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh

我的yml文件结尾看起来像这样:

script: |
  git pull
  export NVM_DIR=~/.nvm
  source ~/.nvm/nvm.sh                
  npm install
  npm run start_server

答案 2 :(得分:1)

npm:找不到命令

原因:

服务器node环境我使用nvm,nvm不会在/usr/local/bin/目录下安装node环境,导致sudo找不到对应的指令,最后创建软连接解决

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node" sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm" sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/pm2" "/usr/local/bin/pm2"

你可以测试“sudo npm -v”

https://blog.csdn.net/weixin_40599109/article/details/110825357

答案 3 :(得分:0)

检查是否在远程ubuntu上安装了 npm
npm 也需要安装在远程服务器上以进行部署。

答案 4 :(得分:0)

原因:

服务器node环境我使用nvm,nvm不会在/usr/local/bin/目录下安装node环境,导致sudo找不到对应的指令,最后创建软连接解决

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm" 

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/pm2" "/usr/local/bin/pm2"

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/yarn" "/usr/local/bin/yarn"

你可以测试“sudo npm -v”