使用 Azure DevOps 部署 Node.js API 后 Azure Web 服务出现应用程序错误

问题描述 投票:0回答:1

我是 Azure 新手,目前正在尝试使用 Azure DevOps 管道将 Node.js API 部署到 Azure Web 服务。部署过程似乎完成且没有错误,但是当我访问 Azure 为我的 API 提供的 URL 时,遇到以下错误:

:( 应用程序错误 如果您是应用程序管理员,您可以访问

这是我的 azure-pipelines.yml 文件供参考:

trigger:
- main

variables:
  webAppName: 'api'
  environmentName: 'api'
  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build stage
  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)

    steps:
    - task: NodeTool@0
      inputs:
        versionSpec: '20.x'
      displayName: 'Install Node.js'

    - script: |
        npm install
        npm run build --if-present
        npm run test --if-present
      displayName: 'npm install, build and test'

    - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
        includeRootFolder: false
        archiveType: zip
        archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
        replaceExistingArchive: true

    - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      artifact: drop

- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: $(environmentName)
    pool:
      vmImage: $(vmImageName)
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy: api'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: webAppLinux
              appName: $(webAppName)
              runtimeStack: 'NODE|20.x'
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
              startUpCommand: 'node dist/src/services/server.js'

任何人都可以帮助我确定可能出了什么问题或者我可以采取哪些步骤来诊断和解决此问题?任何帮助将不胜感激,因为我对 Azure 还很陌生。

这是我的 JSON 文件:

  "name": "api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node dist/src/services/server.js",
    "build": "tsc",
    "dev": "nodemon --exec ts-node src/index.ts",
    "migrate": "node-pg-migrate",
    "migrate-up": "DATABASE_URL=$(azureSubscription) npm run migrate up"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/cors": "^2.8.17",
    "@types/dotenv": "^8.2.0",
    "@types/multer": "^1.4.11",
    "bcrypt": "^5.1.1",
    "cors": "^2.8.5",
    "dotenv": "^16.4.5",
    "express": "^4.18.3",
    "jsonwebtoken": "^9.0.2",
    "multer": "^1.4.5-lts.1",
    "pg": "^8.11.3",
    "typescript": "^5.3.3",
    "uuid": "^9.0.1"
  },
  "devDependencies": {
    "@types/express": "^4.17.21",
    "@types/node": "^20.11.24",
    "@types/pg": "^8.11.2",
    "@types/uuid": "^9.0.8",
    "node-pg-migrate": "^6.2.2",
    "nodemon": "^3.1.0",
    "ts-node": "^10.9.2"
  }
}

javascript node.js azure azure-devops azure-web-app-service
1个回答
1
投票

尝试使用另一个带有

npm run start
的启动命令来启动你的 Nodejs Express api,如下所示:-

我的 Azure devops yaml 管道代码:-

trigger:
- master

variables:

  
  azureSubscription: '7b855bca-812f-408b-bf9c-b66901432ec1'

  
  webAppName: 'siliconwebapp43'

 
  environmentName: 'siliconwebapp43'

 
  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build stage
  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)

    steps:
    - task: NodeTool@0
      inputs:
        versionSpec: '18.x'
      displayName: 'Install Node.js'

    - script: |
        npm install
        npm run build --if-present
        npm run test --if-present
      displayName: 'npm install, build and test'

    - task: ArchiveFiles@2
      displayName: 'Archive files'
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
        includeRootFolder: false
        archiveType: zip
        archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
        replaceExistingArchive: true

    - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      artifact: drop

- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: $(environmentName)
    pool:
      vmImage: $(vmImageName)
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy: siliconwebapp43'
            inputs:
              azureSubscription: $(azureSubscription)
              appType: webAppLinux
              appName: $(webAppName)
              runtimeStack: 'NODE|18.10'
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
              startUpCommand: 'npm run start'

输出:-

enter image description here

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.