【问题标题】:Github actions err: bash: line 3: npm: command not foundGithub 操作错误:bash:第 3 行:npm:找不到命令
【发布时间】:2021-08-16 22:11:58
【问题描述】:

我正在尝试通过 ssh 将 nodejs 应用程序从 github 部署到远程 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
==============================================

截图:

【问题讨论】:

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


    【解决方案1】:

    既然你已经连接到你的服务器,我假设你已经有 repo,所以你只需要执行 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
    

    【讨论】:

    • 像魅力一样工作!
    • 这真的很有帮助,谢谢你的解决方案
    • 这成功了。我也更新到 nvm 并且 npm 没有工作,因为我从 usr local bin 文件夹中删除了它
    【解决方案2】:

    原因:

    我用nvm做服务器节点环境,nvm不会在/usr/local/bin/目录下安装节点环境,导致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”

    【讨论】:

    • 我遇到了一个问题,这解决了。我无法通过 github 操作执行任何命令,例如 npm/pm2。通过链接它们,它现在与其他建议不同。
    • 感谢您的回答,您的回答解决了我的问题
    • 我正在使用 Volta,这解决了我的问题,谢谢。
    • 感谢您的解释,这真的很有帮助
    【解决方案3】:

    你的第一步

    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 到该机器并重新启动您的服务。

    【讨论】:

      【解决方案4】:

      npm: 找不到命令

      原因:

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

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

      你可以测试“sudo npm -v”

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2020-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-22
          • 2013-10-13
          相关资源
          最近更新 更多