[에러로그] 빌드 중 만난 error

0
post-thumbnail
post-custom-banner

💥 에러 발생!

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한 뒤 다시 빌드를 해보니 정상적으로 빌드가 되었다!!

post-custom-banner

0개의 댓글