0

我有一个使用next-connect&的项目next-iron-session

next-connect默认使用<NextApiRequest, NextApiResponse>& 我使用<NextIronRequest, NextApiResponse>where

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

4

1 回答 1

0

原来,我使用的是旧版本的next-connect.

我已经克隆了 repo,next/examples所以这一定是它在旧版本上的原因。

升级next-connect解决了这个问题。

于 2021-09-24T05:16:02.650 回答