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

Vercel部署Next.js+Mongoose应用编译失败问题求助

解决方案

问题根源

你的部署报错核心原因:

  • Next.js 的 middleware.js 默认运行在Edge Runtime,该环境严格禁止动态代码评估(如 eval、new Function 这类操作)
  • 你在 userModel.js 中错误导入了 Mongoose 的浏览器版本(mongoose/dist/browser.umd.js),这个版本包含 Edge Runtime 不允许的动态代码逻辑
  • 由于 middleware.js 间接导入了 userModel.js,编译时触发了 Edge Runtime 的限制检查

具体修复步骤

1. 修正 Mongoose 的导入路径

打开 src/models/userModel.js,把错误的导入语句:

import mongoose from 'mongoose/dist/browser.umd.js'

替换为 Node.js 环境的标准导入:

import mongoose from 'mongoose'

Mongoose 的浏览器版本仅适用于前端环境,你的数据模型需要运行在 Node.js 后端环境(API 路由、Server Components 等)。

2. 强制 Middleware 使用 Node.js Runtime

在 src/middleware.js 文件最顶部添加以下代码,指定该文件使用 Node.js 环境而非默认的 Edge Runtime:

export const runtime = 'nodejs'

这样就能避开 Edge Runtime 对动态代码的限制,同时兼容 Mongoose 的 Node.js 依赖。

3. 检查 NextAuth 配置的执行环境

确保 src/auth.js 中的数据库操作(比如用 Mongoose 查询用户)仅在Server Side执行:

  • 不要在 Client Components 中直接调用 Mongoose 模型
  • NextAuth 的 adapter 或自定义回调逻辑(如 session、jwt)必须运行在 Node.js 环境,避免涉及 Edge 环境代码

4. 验证本地编译

先在本地执行 npm run build,确认编译成功后再重新部署到 Vercel。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:05:00