基于Azure DevOps部署NextJS 14 SSR应用路由项目遇运行故障求助
针对Next.js 14 App Router Azure部署问题的解决方案
问题1:pm2启动提示找不到next模块
- 检查依赖配置:确保
package.json中next被放在dependencies而非devDependencies下,生产环境需要该依赖正常运行。 - 规范依赖安装流程:不要手动复制
node_modules文件,在CI/CD流水线中执行npm install --production,确保所有生产依赖完整安装,避免手动复制导致的依赖链断裂或权限问题。 - 修正pm2启动命令:
- 方式一:直接指定next启动路径,命令为
pm2 start node_modules/next/dist/bin/next start -p $PORT - 方式二:在
package.json中添加启动脚本:"start": "next start",然后用pm2 start npm -- start启动
- 方式一:直接指定next启动路径,命令为
- 确认工作目录:在Azure Web App的配置中,确保启动命令的工作目录设置为项目根目录。
问题2:独立构建后node server.js启动,静态文件加载失败
- 验证独立构建配置:在
next.config.js中确保添加了output: 'standalone'配置,开启独立构建模式。 - 完整复制部署文件:CI/CD流水线构建完成后,必须将以下三个目录同步到Azure Web App的部署目录:
.next/standalone(独立构建的服务端代码).next/static(静态资源文件)public(公共静态文件)
- 修正启动路径:将Azure Web App的工作目录设置为
/site/wwwroot/.next/standalone,然后执行启动命令node server.js;或者在根目录执行node .next/standalone/server.js。 - 配置环境变量:在Azure Web App的应用设置中添加
PORT变量,值设为8080(Azure默认监听端口),同时确保所有NEXT_PUBLIC_开头的环境变量正确配置。 - 检查静态资源路径:确认静态资源的访问路径为
/_next/static/xxx,避免自定义路由或路径配置导致的资源寻址错误。
内容的提问来源于stack exchange,提问作者Long Nguyen
相关产品推荐
相关产品推荐

