使用Github Actions部署到Azure后,Node应用程序无法运行(我的node应用程序存储在github repo的子文件夹中)

qf9go6mv  于 2023-08-07  发布在  Git
关注(0)|答案(1)|浏览(132)

我的node.js(express)服务器在部署到Azure后未启动。
我在一个Github仓库里有好几个项目结构如下:

.github
  workflows
    main_serverexamplewebapp.yml
src
  server_example
    package.json
    server.js
  project_2

字符串
我想将src/server_example部署到Azure Web App并运行server.js。
main_server示例webapp.yml

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy Node.js app to Azure Web App - serverexamplewebapp

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up Node.js version
        uses: actions/setup-node@v1
        with:
          node-version: '18.x'

      - name: npm install, build, and test
        working-directory: ./src/server_example
        run: |
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: node-app
          path: .

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: node-app

      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'serverexamplewebapp'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_12345 }}
          package: .


server.js

const express = require("express");

const app = express();


// parse requests of content-type - application/json
app.use(express.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));

// simple route
app.get("/", (req, res) => {
  res.json({ message: "Welcome!" });
});


const PORT = process.env.PORT || 8080
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});


package.json

{
  "name": "server_example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2"
  }
}


Github操作已成功完成(生成和部署)。在Azure部署中心中也没有错误:

Deployment successful. deployer = GITHUB_ZIP_DEPLOY deploymentPath = ZipDeploy. Extract zip.


但是当我打开URL时,会出现默认的Azure消息“您的Web应用程序正在运行并等待您的内容”。
部署后,我应该如何在Azure上运行server.js?

kmynzznz

kmynzznz1#

所以,我做了这些事情来解决这个问题:
1.**更改了main_serverexamplewebapp.yml:**我已经将actions/upload-artifact@v2中的path.更改为./src/server_example(它是我的repo中的项目路径)。以下是正确的片段:

- name: Upload artifact for deployment job
  uses: actions/upload-artifact@v2
  with:
      name: node-app
      path: ./src/server_example

字符串
1.在Azure配置中添加了npm run start(左栏“配置”->“常规设置”选项卡->在“启动命令”输入中添加npm run start)x1c 0d1x

相关问题