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

Next.js 13使用Middleware遇TypeError报错,求问题排查与解决

问题描述

在Next.js 13项目中,于根目录(与pages文件夹同级)创建middleware.js文件,代码如下:

import { NextResponse } from 'next/server'

export function middleware(request) {
    return NextResponse.redirect(new URL('/about-2', request.url))
}

启动本地服务时触发如下错误:

error - Error [TypeError]: Class extends value undefined is not a constructor or null
    at ../../node_modules/.pnpm/undici@5.11.0/node_modules/undici/lib/fetch/file.js (evalmachine.<anonymous>:5724:19)
    at __require (evalmachine.<anonymous>:14:50)
    at ../../node_modules/.pnpm/undici@5.11.0/node_modules/undici/lib/fetch/formdata.js (evalmachine.<anonymous>:5881:49)
    at __require (evalmachine.<anonymous>:14:50)
    at ../../node_modules/.pnpm/undici@5.11.0/node_modules/undici/lib/fetch/body.js (evalmachine.<anonymous>:6094:35)
    at __require (evalmachine.<anonymous>:14:50)
    at ../../node_modules/.pnpm/undici@5.11.0/node_modules/undici/lib/fetch/response.js (evalmachine.<anonymous>:6510:49)
    at __require (evalmachine.<anonymous>:14:50)
    at <unknown> (evalmachine.<anonymous>:11635:30)
    at requireFn (file://C:\Users\username\Desktop\Nextjs-Blog\node_modules\next\dist\compiled\edge-runtime\index.js:1:7079) {
  middleware: true
}

该代码在Next.js 12项目中可正常运行,询问当前代码是否存在问题。

问题分析与解决

代码本身无语法问题,报错是由于Next.js 13与当前使用的undici@5.11.0版本存在兼容性冲突。Next.js 13的Edge Runtime对undici版本有特定要求,旧版本会触发类继承未定义的错误。

解决步骤:

  • 升级undici到兼容版本,执行命令:
    pnpm update undici
    
  • 若升级后问题仍存在,删除node_modules和pnpm-lock.yaml文件,重新安装依赖:
    rm -rf node_modules pnpm-lock.yaml
    pnpm install
    
  • 同步升级Next.js到最新稳定版,规避版本自身潜在bug:
    pnpm update next
    

补充说明:Next.js 13的Middleware写法与12基本一致,若项目使用Pages Router,当前代码完全符合规范,无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:24:55