如何通过Azure DevOps CI/CD部署Node.js项目并排查500错误
解决Node.js Azure App Service部署500错误的步骤
一、先修复代码致命错误
你提到的app.js里的两个错误是引发500的核心原因,必须优先修正:
- 把
pool.conect()改为pool.connect(),拼写错误会直接导致启动时抛出未捕获异常,终止应用进程。 - 闭合
testConnection函数的括号/大括号,未闭合的语法错误会让Node.js进程无法正常启动。
二、调整package.json启动脚本
Azure App Service默认用npm start启动应用,nodemon是开发环境工具,生产环境要换成稳定的node启动:
"scripts": { "start": "node app.js", "dev": "nodemon app.js" }
三、优化Azure DevOps构建流水线配置
你的构建步骤存在冗余,且遗漏了依赖文件的打包:
- 移除多余的复制文件任务:当前只复制
.js和.json,没有包含node_modules目录,部署后会因缺少依赖导致启动失败。 - 调整归档任务:将归档路径设置为
**/*,确保把项目根目录下的所有文件(包括node_modules、package.json、app.js等)都打包成构建工件。
四、确认Azure App Service环境配置
- 登录Azure门户,进入你的Web应用,在配置 > 应用程序设置里,核对PostgreSQL的所有环境变量(地址、用户名、密码、端口等)和本地开发时的配置一致。
- 检查常规设置的启动命令:如果
package.json的start脚本已正确设置,这里可以留空,Azure会自动读取npm start;也可以手动指定为npm start。
五、查看日志定位剩余问题
如果以上操作后仍报错,通过日志排查细节:
- 进入Azure门户的Web应用日志流,实时查看应用启动和运行时的错误信息。
- 或者通过高级工具 > Kudu,在
D:\home\LogFiles\Application目录下查看nodejs.log,里面会记录Node.js进程的详细错误栈。
六、验证web.config配置(Windows主机)
如果使用Windows版App Service,确保根目录的web.config配置正确,让IIS能正确转发请求到Node.js:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode"/> </handlers> <rewrite> <rules> <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true"> <match url="^app.js\/debug[\/]?" /> </rule> <rule name="StaticContent"> <action type="Rewrite" url="public{REQUEST_URI}"/> </rule> <rule name="DynamicContent"> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> </conditions> <action type="Rewrite" url="app.js"/> </rule> </rules> </rewrite> <iisnode node_env="production" /> </system.webServer> </configuration>
确保这个文件被包含在构建工件中,部署到App Service。
内容的提问来源于stack exchange,提问作者Rohan
相关产品推荐
相关产品推荐

