環境
エラー内容
Nodeのバージョンを14.xから16.xに上げたらNextAuthの認証部分でエラーが起きた。
[next-auth][error][client_fetch_error]
しかし探ってみると、原因は上記エラー内容とは違っていて、 Credenrialsプロバイダの authorize メソッドに渡していた req オブジェクトから、以前はとれてたはずの headers 情報が抜け落ちていたからだった。
/pages/auth/[...nextauth.ts]import { NextApiRequest, NextApiResponse } from 'next'
import NextAuth from 'next-auth'
const options: NextAuthOptions = {
providers: [
Providers.Credentials({
authorize: (credentials: AuthProps, req) => {
console.log(req.header)
}
})
]
}
export default (
req: NextApiRequest,
res: NextApiResponse
): void => NextAuth(req, res, options)
対応
しょうがないので、 options を外だしせずに、(req, res) => NextAuth() 内に入れてreqを直接受け取ることにしたらうまくいった。
/pages/auth/[...nextauth.ts]import { NextApiRequest, NextApiResponse } from 'next'
import NextAuth from 'next-auth'
export default (
req: NextApiRequest,
res: NextApiResponse
): void => NextAuth(req, res, {
providers: [
Providers.Credentials({
authorize: (credentials: AuthProps) => {
console.log(req.header)
}
})
]
}
恐らく、そのうちNextAuthが対応するんだろうと思うけど、それ以上に、v4でいろいろ変わりそう。