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

React应用本地正常,部署至Azure Web App后无法运行求助

问题分析

从Kudu日志的Cannot find module './cli'错误来看,核心问题出在生产环境的启动逻辑和部署配置上:

  • Azure Web App默认执行npm start,但你的start脚本是启动Parcel开发服务器,而Parcel属于devDependencies,生产环境部署时默认不会安装开发依赖,导致CLI模块缺失。
  • 当前GitHub Actions部署了整个项目目录,包括本地构建的node_modules,但Azure生产环境不会自动安装dev依赖,进一步加剧了依赖缺失问题。
  • 生产环境不需要启动Parcel开发服务器,应该用静态文件服务器托管Parcel构建好的dist文件夹。
解决方案

1. 修正package.json启动脚本

将start脚本替换为生产环境的静态服务启动命令,保留开发环境的启动脚本用于本地调试:

{
  "name": "myapp",
  "version": "0.1.3",
  "private": true,
  "scripts": {
    "start": "serve -s dist",
    "build": "npx parcel build index.html",
    "start:dev": "npx parcel index.html --port=8081"
  },
  // 其余依赖配置保持不变
}

2. 优化GitHub Actions工作流

只部署生产所需的必要文件,避免冗余的dev依赖和代码文件:

修改构建阶段的上传步骤

# 替换原build job中的Upload artifact步骤
- name: Upload artifact for deployment job
  uses: actions/upload-artifact@v2
  with:
    name: node-app
    path: |
      dist/
      package.json
      package-lock.json

在部署阶段添加生产依赖安装

# 在deploy job的Deploy to Azure Web App步骤前添加:
- name: Install production dependencies
  run: npm ci --only=production

3. 验证Azure Web App配置

  • 确认Azure Web App的WEBSITE_NODE_DEFAULT_VERSION设置为18.x,与构建环境的Node版本一致。
  • 若需自定义启动命令,可在Azure门户的「配置」->「常规设置」中设置启动命令为npm start(默认即为该值,一般无需修改)。

4. 清理旧部署文件

通过Kudu控制台清空/home/site/wwwroot目录,避免旧文件干扰新部署。

验证流程
  1. 推送修改后的代码到main分支,触发GitHub Actions构建部署。
  2. 部署完成后访问Azure Web App URL,检查页面是否正常加载。
  3. 查看Kudu日志,确认启动命令为serve -s dist,无模块缺失类错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:32:17