Open2
Electron+Next.js+NextAuth.jsでサインイン時のリダイレクトで詰まった話
Next.jsで作ったアプリをElectronで配布しようと思ってelectron-nextでwrapしたが,next-authのsignInやsignOut(そもそもReact Routerのpush等も)でのリダイレクトが機能しなかった.
具体的には
(node:21420) electron: Failed to load URL: http://localhost:3000/ with error: ERR_CONNECTION_REFUSED
(Use `electron --trace-warnings ...` to show where the warning was created)
というエラーが出てリソースが読み込まれなかった.headやbodyの中身が全くない.
next-authにはnext.js(react)のrouterにwrapする形で[...nextauth].js
でリダイレクト先を変更するオプションがある.ここをデフォルトからうまくいじってあげると正しくリダイレクトされる.
...
callbacks: {
redirect: async ({ url, baseUrl }: { url: string, baseUrl: string }) => {
if (url.startsWith("/")) return `${baseUrl}${url}`
- else if (new URL(url).origin === baseUrl) return url
- return baseUrl
+ return url
}
...