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

Next.js v15.0.1 集成 NextAuth.js v5.0.0-beta.25 编译报错:Unknown module type(中间件调用auth获取会话数据时触发)

Next.js v15.0.1 集成 NextAuth.js v5.0.0-beta.25 编译报错:Unknown module type(中间件调用auth获取会话数据时触发)

嗨,看了你遇到的这个报错,核心原因是NextAuth v5的auth()函数在middleware里的调用方式完全错了,加上没处理异步逻辑,才触发了这个“Unknown module type”的奇怪错误。我给你梳理下修复步骤:

1. 修正auth()的调用逻辑(最关键)

NextAuth v5的auth()是异步函数,而且必须把request对象传进去——它需要从请求里读取cookie、headers这些信息来生成会话数据。你之前既没传request,也没加await,导致内部逻辑直接炸了,才抛出模块类型的错误。

把你的middleware.js改成这样:

import { NextResponse } from 'next/server';
import { auth } from './auth';

// 必须加async,因为auth()是异步函数
export async function middleware(request) {
    // 传入request,并用await拿到实际的会话数据
    const session = await auth(request);
    const token = request.cookies.get('authjs.session-token');

    console.log('token', token);
    console.log('session data:', session);

    return NextResponse.next();
}

export const config = {
    matcher: ['/login', '/signup'],
};

2. 确认模块格式兼容性

你的next.config.mjs是ES模块格式,目前你的auth.js和middleware.js都用了import/export,符合ES模块规范,这部分没问题,不用改。

3. 额外提醒:检查authorize函数的返回值(避免后续会话问题)

虽然不是当前报错的原因,但要确保你的authorizeUser函数返回的是符合要求的用户对象(比如包含id、email这些字段)或者null,不然就算当前报错解决了,后续获取会话数据也可能出问题。

改完之后重启项目,应该就能正常打印会话数据,不会再出现那个模块类型的报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:19:29