app route로 변경하던 중 로컬에서는 문제 없이 작동되는데 빌드 하려고 하니 다음과 같은 에러가 발생하면서 실패😭
Type error: Type 'OmitWithTag<typeof import("C:/Users/kimsooin/hole-in-the-wall/src/app/api/auth/[...nextauth]/route"), "GET" | "DELETE" | "HEAD" | "OPTIONS" | "POST" | "PUT" | "PATCH" | "config" | "generateStaticParams" | ... 6 more ... | "maxDuration", "">' does not satisfy the constraint '{ [x: string]: never; }'.
Property 'authOptions' is incompatible with index signature.
Type 'AuthOptions' is not assignable to type 'never'.
6 |
7 | // Check that the entry is a valid entry
> 8 | checkFields<Diff<{
| ^
9 | GET?: Function
10 | HEAD?: Function
11 | OPTIONS?: Function
- info Linting and checking validity of types ...
/src/app/api/auth/[...nextauth]/route.ts
export const authOptions: NextAuthOptions = {
session: {
strategy: "jwt" as const,
maxAge: 60 * 60 * 24,
updateAge: 60 * 60 * 2,
},
adapter: PrismaAdapter(prisma),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID || "",
clientSecret: process.env.GOOGLE_CLIENT_SECRET || "",
}),
NaverProvider({
clientId: process.env.NAVER_CLIENT_ID || "",
clientSecret: process.env.NAVER_CLIENT_SECRET || "",
}),
KakaoProvider({
clientId: process.env.KAKAO_CLIENT_ID || "",
clientSecret: process.env.KAKAO_CLIENT_SECRET || "",
allowDangerousEmailAccountLinking: true,
}),
],
(...생략...)
};
const handler = NextAuth(authOptions);
export { handler as GET, handler as POST };
기존의 route.ts 파일에서 authOptions을 export 하고 있었다.
https://stackoverflow.com/questions/76388994/next-js-13-4-and-nextauth-type-error-authoptions-is-not-assignable-to-type-n
위의 글에서 원인과 해결방법을 찾을 수 있었다.
authOptions을 다른 파일로 분리하고 route 파일 내에서 import하여
스택오버플로우에서 찾은 대로 utils라는 폴더에
/src/app /utils/authOptions 파일을 분리한 다음
/src/app/api/auth/[...nextauth]/route.ts
import { authOptions } from "@/app/utils/authOptions";
import NextAuth from "next-auth/next";
const handler = NextAuth(authOptions);
export { handler as GET, handler as POST };
이렇게 import한 뒤 다시 빌드를 해보니 정상적으로 빌드가 되었다!!