You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Static Web Apps部署NuxtJS 3时无法找到_nuxt文件夹

Azure DevOps发布流水线部署NuxtJS 3到静态Web App时_nuxt文件夹404问题解决

问题描述

在Azure DevOps中配置构建流水线,构建工件生成正常,下载后用swa发布也能正常运行,但通过发布流水线的「Deploy Azure Static Web App (Preview)」任务部署时,浏览器开发者工具出现大量访问_nuxt文件夹的404错误。直接从构建流水线部署正常,但不符合需求。已尝试添加空的.nojekyll文件,无效果。

现有配置

发布流水线YAML步骤(已解压到zip目录)

steps:
- task: AzureStaticWebApp@0
  displayName: 'Publishing Website'
  inputs:
    workingDirectory: zip
    app_location: .app/.output/public
    output_location: .app/.output/public
    api_location: .app/.output/server
    config_file_location: .app
    skip_app_build: true
    is_static_export: false
    verbose: true
    azure_static_web_apps_api_token: 'mytoken'
    deployment_environment: Dev
    production_branch: development

.app/swa-cli.config.json配置

{
  "$schema": "https://aka.ms/azure/static-web-apps-cli/schema",
  "configurations": {
    ".app": {
      "appLocation": ".output/public",
      "apiLocation": ".output/server",
      "outputLocation": ".output/public",
      "apiLanguage": "node",
      "apiVersion": "18",
      "appName": "test123",
      "resourceGroup": "dev-resources"
    }
  }
}

构建流水线定义

trigger:
  - development

pool:
  vmImage: ubuntu-latest

variables:
  - group: dev-variable-group
  - name: buildVersion
    value: $(Date:yyyyMMdd).$(Rev:r)
  - name: artifactName
    value: 'ui-artifact'

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo "##vso[task.setvariable variable=buildVersion;]$(Build.BuildNumber)"
      displayName: 'Set Build Version Variable'

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

    - script: npm install -g pnpm
      displayName: 'Install pnpm'

    - script: |
        pnpm i
        pnpm build
      displayName: 'npm install and build'

    # Package the app into a zip file
    - script: zip -r $(buildVersion).zip .app
      displayName: 'Package app into ZIP'

    # Publish the zip as an artifact of the build
    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$(buildVersion).zip'
        artifactName: $(artifactName)

问题排查与解决步骤

1. 验证发布路径的正确性

发布任务的workingDirectory为zip,需确保解压后zip目录下直接包含.app文件夹。添加目录检查步骤确认结构:

- script: ls -la zip/.app/.output/public
  displayName: 'Verify App Public Directory'

2. 修正发布任务的output_location配置

Nuxt3部署时,output_location无需重复设置为app_location的值,静态Web App任务会自动从app_location读取静态资源。删除或注释该配置项:

steps:
- task: AzureStaticWebApp@0
  displayName: 'Publishing Website'
  inputs:
    workingDirectory: zip
    app_location: .app/.output/public
    # output_location: .app/.output/public  # 删除或注释此行
    api_location: .app/.output/server
    config_file_location: .app
    skip_app_build: true
    is_static_export: false
    verbose: true
    azure_static_web_apps_api_token: 'mytoken'
    deployment_environment: Dev
    production_branch: development

3. 确保构建打包完整

手动zip命令可能遗漏文件,改用Azure DevOps的ArchiveFiles@2任务打包,保证所有文件被包含:

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '.app'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(buildVersion).zip'
    replaceExistingArchive: true
  displayName: 'Package app into ZIP'

同时在构建流水线中添加步骤,验证_nuxt文件夹存在:

- script: ls -la .app/.output/public/_nuxt
  displayName: 'Verify Nuxt Build Output'

4. 添加静态Web App路由配置

在.app/.output/public目录下创建staticwebapp.config.json,确保_nuxt资源能被正确访问:

{
  "routes": [
    {
      "route": "/_nuxt/*",
      "serve": "/_nuxt/{file}"
    },
    {
      "route": "/*",
      "serve": "/index.html",
      "statusCode": 200
    }
  ]
}

确保该文件在构建时被包含到.app目录中,随打包工件发布。

内容的提问来源于stack exchange,提问作者Pieter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:47:12