【发布时间】:2021-11-17 00:36:42
【问题描述】:
我有一个项目使用next-connect & next-iron-session。
next-connect 默认使用<NextApiRequest, NextApiResponse> 而我在哪里使用<NextIronRequest, NextApiResponse>
export type AppSession = {
session: Session
}
export type NextIronRequest = NextApiRequest & AppSession
但我无法将<NextIronRequest, NextApiResponse> 传递给nc,例如:
return nc<NextIronRequest, NextApiResponse>({
onError: (err, _, res) => {
error(err)
res.status(500).end(err.toString())
},
})
这应该可以解决我的问题,但它给了我错误:
预期的类型参数为 0,但得到了 2.ts(2558)
我的handler() 函数出现过载错误,例如:
export default handler()
.get('/twitter/generate-auth-link', generateAuthLink)
.get('/twitter/get-verifier-token', getVerifierToken)
每种方法都有 2 个错误:
没有重载匹配这个调用。 重载 1 of 2,'(...handlers: RequestHandler[]): NextConnect',给出了以下错误。 'string' 类型的参数不能分配给'RequestHandler' 类型的参数。 Overload 2 of 2, '(pattern: string | RegExp, ...handlers: RequestHandler[]): NextConnect',给出了以下错误。 '(req: NextIronRequest, res: NextApiResponse) => Promise' 类型的参数不可分配给 'RequestHandler' 类型的参数。 参数“req”和“req”的类型不兼容。 类型“NextApiRequest”不可分配给类型“NextIronRequest”。 “NextApiRequest”类型中缺少属性“会话”,但在“AppSession”类型中是必需的。ts(2769)
没有重载匹配这个调用。 重载 1 of 2,'(...handlers: RequestHandler[]): NextConnect',给出了以下错误。 'string' 类型的参数不能分配给'RequestHandler' 类型的参数。 Overload 2 of 2, '(pattern: string | RegExp, ...handlers: RequestHandler[]): NextConnect',给出了以下错误。 '(req: NextIronRequest, res: NextApiResponse) => Promise' 类型的参数不可分配给 'RequestHandler' 类型的参数。 参数“req”和“req”的类型不兼容。 类型“NextApiRequest”不可分配给类型“NextIronRequest”。 类型 'NextApiRequest' 不可分配给类型 'AppSession'.ts(2769)
我该如何解决?
我的完整复制在这里→https://github.com/deadcoder0904/twitter-api-v2-3-legged-login-using-next-connect
【问题讨论】:
标签: typescript next.js session-state next-connect