Azure Web App部署Next.js应用报错:找不到模块'../server/require-hook'
解决Next.js部署Azure Web App时的"Cannot find module '../server/require-hook'"错误
可能的修复步骤
1. 确认Azure部署的依赖安装流程
Azure部署时可能因构建命令缺失导致依赖未正确安装:
- 登录Azure门户,进入Web App的部署中心-配置,检查构建命令是否包含
npm install或npm ci - 若使用GitHub Actions部署,检查工作流文件,确保有明确的依赖安装步骤:
- name: Install dependencies run: npm install
2. 避免上传本地node_modules
本地node_modules与服务器环境可能存在文件差异或权限问题:
- 确保
.gitignore中包含node_modules,让Azure在服务器端重新安装依赖 - 若之前手动上传过
node_modules,通过Kudu控制台删除服务器上的该文件夹,再重新触发部署
3. 锁定Next.js版本
package.json中的版本范围可能导致服务器安装的Next.js版本与本地不一致:
- 将
package.json中的Next.js版本改为具体值,比如"next": "14.2.13"(替换为你本地使用的版本) - 重新生成
package-lock.json并提交至GitHub
4. 修改Azure启动命令
跳过node_modules/.bin/next的软链接,直接指定启动文件路径:
- 在Azure门户的Web App配置-常规设置中,将启动命令改为:
node node_modules/next/dist/bin/next start -p $PORT
5. 清理Azure部署缓存
旧缓存可能导致依赖文件损坏:
- 进入Azure Web App的高级工具-Kudu-控制台,执行以下命令:
执行完成后重启Web Apprm -rf node_modules rm package-lock.json npm install npm run build
内容的提问来源于stack exchange,提问作者Katsu
相关产品推荐
相关产品推荐

