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

Next.js 14中禁用Edge Runtime以解决next-auth、Prisma适配器及getSession相关构建报错问题

Next.js 14中禁用Edge Runtime以解决next-auth、Prisma适配器及getSession相关构建报错问题

Hey there! 看你遇到的这个构建报错,我之前也踩过类似的坑——这是因为next-auth的某些依赖模块(比如你日志里的@babel/runtime/regenerator)用到了动态代码评估(像eval、new Function这类),而Edge Runtime出于安全和性能限制,不允许这类操作。既然你说Edge Runtime不是必须的,那直接禁用它就能搞定问题,给你几个靠谱的解决办法:

1. 单个页面/路由组件禁用

如果只是特定页面或路由用到了next-auth的方法(比如getSession),可以在对应文件的顶部添加运行时配置:

export const runtime = 'nodejs'; // 指定使用Node.js运行时,替代Edge Runtime

这样这个页面就会用Node.js环境运行,不会触发Edge的限制规则。

2. 全局禁用Edge Runtime

如果你的整个项目都不需要Edge Runtime,直接在next.config.js里配置全局默认运行时:

/** @type {import('next').NextConfig} */
const nextConfig = {
  runtime: 'nodejs',
  // 这里可以保留你原本的其他配置项
}

module.exports = nextConfig;

设置后,所有页面和API路由都会默认使用Node.js运行时,不用逐个文件单独配置。

3. API路由单独禁用

要是你是在API路由里使用next-auth(比如auth相关的接口),同样在该API文件顶部加上配置:

export const runtime = 'nodejs';

这样就能避开动态代码评估的报错,让API路由正常构建。

简单说,核心就是把Edge Runtime切换回传统的Node.js运行时,因为Node.js对动态代码执行没有这类限制,刚好适配next-auth的依赖需求。

备注:内容来源于stack exchange,提问作者mxcdh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:54:31