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

NextJS执行next build时NextAuth出现TypeError的问题求助

解决Next.js 15 + next-auth 4.x构建时provider导入错误问题

问题背景

使用以下版本依赖:

"next": "^15.1.4",
"next-auth": "^4.24.11",

执行next build时报错TypeError: c is not a function,禁用构建压缩后错误变为TypeError: facebook is not a function。调试打包后的代码发现,导入的FacebookProvider是ES模块对象{__esModule: true, default: ƒ}而非预期的函数,说明Next.js打包器未正确处理next-auth provider的默认导出。

解决方案

方案1:显式获取provider的默认导出

修改provider的导入语句,明确提取default导出:

import NextAuth from "next-auth";
import { default as GoogleProvider } from "next-auth/providers/google";
import { default as FacebookProvider } from "next-auth/providers/facebook";
import { default as GitHubProvider } from "next-auth/providers/github";

或者保持原有导入方式,在使用时调用default属性:

// 导入方式不变
import FacebookProvider from "next-auth/providers/facebook";

// 使用时调整为
FacebookProvider.default({
  clientId: process.env.FACEBOOK_CLIENT_ID,
  clientSecret: process.env.FACEBOOK_CLIENT_SECRET
})

方案2:配置Next.js转译next-auth相关包

在next.config.js中添加transpilePackages配置,强制Next.js转译next-auth及其provider模块:

/** @type {import('next').NextConfig} */
const nextConfig = {
  transpilePackages: ['next-auth', 'next-auth/providers'],
  // 其他现有配置
}

export default nextConfig;

方案3:升级next-auth到兼容版本

next-auth 4.x对Next.js 15的支持可能存在适配问题,尝试升级next-auth到最新的4.x稳定版:

npm update next-auth
# 或
yarn upgrade next-auth

原理说明

Next.js 15的打包器(Turbopack或优化后的Webpack)在处理某些第三方ES模块时,可能会默认保留模块的包装结构,导致直接导入时拿到的是模块对象而非默认导出的函数。显式提取default或配置转译可以强制打包器正确解析模块导出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:04:51