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

使用next-connect和next-iron-session时出现TypeScript重载匹配调用错误

问题根因

你遇到的报错是next-connect版本差异导致的:v1.x 版本重构了类型定义,不再支持直接给nc传入2个泛型参数,且默认实例不支持路径匹配,和你使用的旧版写法不兼容。

解决方法

方法1:降级到兼容的v0.x版本(最便捷)

v0.12.x是next-connect v0的最后稳定版本,完全支持你原有的写法,直接安装对应版本即可:

npm install next-connect@0.12.2
# 或者用yarn/pnpm
pnpm add next-connect@0.12.2

安装后你原来的nc<NextIronRequest, NextApiResponse>写法、链式调用带路径的.get方法都不会再报类型错误。

方法2:适配v1.x版本的类型定义

如果要使用v1.x版本,按以下步骤修改:

  1. 扩展全局NextApiRequest类型(一劳永逸,无需自定义NextIronRequest)
    在项目的next-env.d.ts或者自定义的types/index.d.ts文件中添加如下声明:
import type { Session } from 'next-iron-session'

declare module 'next' {
  interface NextApiRequest {
    session: Session
  }
}
  1. 调整handler创建写法,添加类型断言适配泛型:
import nc, { type NextConnect } from 'next-connect'
import type { NextApiRequest, NextApiResponse } from 'next'

const handler = nc({
  onError: (err, _, res: NextApiResponse) => {
    console.error(err)
    res.status(500).end(err.toString())
  },
}) as NextConnect<NextApiRequest, NextApiResponse>
  1. 如果你需要用到路径匹配功能,需要使用v1提供的路由增强:
import { nc } from 'next-connect/node' // 对应node运行时
import { withRouter } from 'next-connect/router'

const handler = withRouter(nc({
  onError: (err, _, res) => {
    console.error(err)
    res.status(500).end(err.toString())
  }
}))

修改后所有路由handler的req都会默认带session类型,链式调用的路径参数也不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:06:05