Azure Pipelines部署异常:代码被部署至wwwroot/s而非wwwroot
解决Azure Pipelines部署React应用到App Service时文件部署到wwwroot/s目录的问题
问题原因
你的流水线当前发布的是整个项目目录(而非React构建后的静态文件目录),导致部署时目录结构错位,最终静态文件被放到了wwwroot/s目录下,而非wwwroot根目录,进而引发访问权限错误。
解决方案
1. 确认React构建输出目录
先确认npm run build:dev执行后生成的静态文件目录,React项目默认是build目录,部分项目可能配置为dist。你可以查看项目根目录下的package.json中scripts字段的build:dev配置,或者查看构建后生成的目录。
2. 修改Build阶段的发布任务
修改PublishPipelineArtifact@1任务,指定仅发布构建后的静态文件目录,而非整个项目目录。假设构建输出目录是build,修改后的任务如下:
- task: PublishPipelineArtifact@1 displayName: 'Publish Artifact' inputs: artifact: 'drop' publishLocation: 'pipeline' targetPath: './build' # 替换为你的实际构建输出目录,比如./dist
3. 调整Deploy阶段的部署路径
由于现在发布的工件仅包含静态文件,部署时直接指向下载后的工件目录即可:
- task: AzureWebApp@1 displayName: 'Azure App Service Deploy' inputs: azureSubscription: $(serviceConnection) appName: $(webAppName) package: '$(Pipeline.Workspace)/drop' deploymentMethod: 'runFromPackage' appType: 'webApp' appSettings: '-appServicePlan $(appServicePlan)'
额外检查(可选)
- 确认App Service的默认文档设置已包含
index.html(静态Web应用的默认首页),可在Azure门户的App Service配置中查看。 - 流水线中
DeployFunctionApp阶段的命名与实际部署WebApp不符,可修改为DeployWebApp避免混淆。
内容的提问来源于stack exchange,提问作者TGB-Opp
相关产品推荐
相关产品推荐

