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

通过GitHub CI/CD部署Node.js到Azure Web App时端口8080报错

解决Azure Web App部署Node.js连接MySQL后的启动失败问题

1. 优先排查 MODULE_NOT_FOUND 错误

该错误是服务启动失败的核心原因,依赖缺失会直接导致服务无法初始化,进而引发端口无响应:

  • 检查package.json中的依赖项,确认MySQL相关包(如mysql2或mysql)已声明在dependencies字段下,而非仅在devDependencies中——部署阶段默认不会安装devDependencies中的包。
  • 查看GitHub工作流文件,确认部署阶段执行的是npm install还是npm install --production:若MySQL包在devDependencies中,要么将其移至dependencies,要么将安装命令改为npm install。
  • 登录Azure Web App的Kudu控制台(通过Azure Portal进入目标Web App,在「开发工具」中选择「高级工具」),进入site/wwwroot目录,检查node_modules文件夹中是否存在MySQL相关包。若不存在,手动执行npm install并查看安装过程中的报错信息。

2. 端口无响应问题(依赖问题解决后验证)

端口无响应通常是服务未成功启动的连锁反应,依赖问题修复后,可按以下步骤排查:

  • 确认server.js中监听的端口逻辑正确,需兼容Azure的PORT环境变量:即使你在Web App配置中设置了8080,也建议使用process.env.PORT || 8080来读取端口,示例代码:
    const port = process.env.PORT || 8080;
    app.listen(port, () => {
      console.log(`Server running on port ${port}`);
    });
    
  • 验证MySQL连接配置:确认主机地址、用户名、密码、数据库名与Azure MySQL Server的配置完全一致,同时检查Azure MySQL Server的防火墙设置,是否允许Azure服务访问该服务器。连接失败会直接导致服务启动崩溃,进而出现端口无响应。
  • 查看Azure Web App的日志流(Azure Portal -> 目标Web App -> 「监控」->「日志流」),获取更详细的启动报错信息,比如MySQL连接超时、认证失败等具体异常。

3. GitHub工作流正确性验证

确保CI/CD流程未遗漏关键文件或步骤:

  • 确认工作流在构建后,已将package.json、server.js及所有源码文件正确部署到Azure,无文件遗漏。
  • 若存在构建步骤(如代码打包),确认构建产物输出到了Azure预期的目录,且入口文件配置正确。

4. 本地复现测试

在本地模拟生产环境验证:

  • 删除本地node_modules和package-lock.json文件,执行npm install --production,然后启动服务,检查是否能正常运行并连接MySQL。若本地也出现相同错误,优先在本地修复后再重新部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:08:10