NextJS - ReferenceError: File is not defined 해결하기
작성 일자 : 2024년 12월 21일
(이미지)
어떤 문제가 발생했는가?
Answer: NextJS에서 Production 서버에서만 ReferenceError: File is not defined
에러 발생
CloudWatch 로그
ReferenceError: File is not defined
at 40901 (/app/.next/server/chunks/438.js:1:5746)
at Function.t (/app/.next/server/webpack-runtime.js:1:128)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async r (/app/.next/server/chunks/680. js:1:1250)
at async /app/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js:16:418
at async rT /app/node_modules/next/dist/compiled/next-server/app-page.runtime.prod. js: 15:8148)
at async ne (/app/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js:18:1144)
at async doRender (/app/node_modules/next/dist/server/base-server.js:1406:30)
at async cacheEntry.responseCache.get.routeKind (/app/node_modules/next/dist/server/base-server.js:1567:28)
at async NextNodeServer.renderToResponseWithComponentsImpl /app/node_modules/next/dist/server/base-server. js:1475:28) {
digest: '1025040871'
}
원인은 무엇인가?
Answer: 배포 환경에서 Node18 버전을 사용해서 발생하는 문제
어떻게 해결했는가?
Answer: Dockerfile
에서 Node 버전을 18에서 23으로 변경
Vercel에서 예시로 제공하는 Dockerfile
FROM node:18-alpine AS base
# Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
...
변경된 Dockerfile
FROM node:23-alpine AS base
# Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
...
Reference
ReferenceError: File is not defined · vercel next.js · Discussion #56032
Summary Fail on build Error occurred prerendering page "/profile/hustler". Read more: https://nextjs.org/docs/messages/prerender-error ReferenceError: File is not defined > Export encountered error...
github.com