node 18 버전에서는 File 타입을 사용할 경우 빌드 시
ReferenceError: File is not defined
오류가 발생한다.
노드 버전을 20 이상으로 바꾸면 해결되긴 한다.
근데 당장 바꿀 수 없어 다른 방식으로 해결해야 했다.
문제 코드
import { z } from 'zod'; const FileWithType = z.object({ file: z.instanceof(File), type: z.enum(['PC', 'MOBILE']), });
zod로 타입 검증을 하는 도중, 브라우저 전용 객체인 File이 서버 환경(node v18)에서는 정의되지 않아 빌드 시 발생한 오류
해결한 코드
import { z } from 'zod'; const FileWithType = z.object({ file: typeof File !== 'undefined' ? z.instanceof(File) : z.any(), type: z.enum(['PC', 'MOBILE']), });
=> 브라우저 환경에서만 File 검증