문제점
🚨 Vercel로 배포하면서 빌드 중에 Top-level await 에러 발생하여 빌드 실패
오류 메세지
💬 error during build:
---
Error:
[vite:esbuild-transpile] Transform failed with 2 errors:
---
assets/index-!~{001}~.js:29703:19: ERROR: Top-level await is not available in the configured target environment ("chrome87", "edge88", "es2020", "firefox78", "safari14" + 2 overrides)
---
assets/index-!~{001}~.js:29704:0: ERROR: Top-level await is not available in the configured target environment ("chrome87", "edge88", "es2020", "firefox78", "safari14" + 2 overrides)

아직 백엔드와 연결하기 전이어서 배포 후에도 msw가 작동하도록 코드를 수정했는데 top level에서 await을 쓸 수 없다는 오류 메세지.
// main.tsx
const { worker } = await import('./mocks/browser.ts');
await worker.start({
onUnhandledRequest: 'bypass',
});
Top-level-await ⁉️
async 함수의 스코프 내부에서 동작하지 않고, 모듈의 최상단에서 await 키워드를 활용해 비동기 함수를 처리하는 개념을 Top-level await라 한다.
이 개념이 표준이 되기 이전에도 dev모드에서는 정상작동했으나 공식적인 표준으로 인정받은 시점은 ES2022 부터이다.
(출처: https://velog.io/@whaleinmilktea/Vite-빌드-시-Top-level-await-Error)
해결방안 1 : vite-plugin-top-level-await vite 플러그인 설치
npm: vite-plugin-top-level-await
vite-plugin-top-level-await
Transform code to support top-level await in normal browsers for Vite.. Latest version: 1.4.1, last published: 5 months ago. Start using vite-plugin-top-level-await in your project by running `npm i vite-plugin-top-level-await`. There are 26 other projects
www.npmjs.com
✅ 해결방안 2 : tsconfig.json 파일 수정
{
"compilerOptions": {
"target": "ES2022",
// ... 생략
}
'Recap > 에러 해결 기록' 카테고리의 다른 글
| TypeScript에서 Reduce 함수로 객체 생성할 때의 타입 에러 (0) | 2024.05.15 |
|---|---|
| 리액트 쿼리 useMutation의 mutationFn은 하나의 argument만 받는다. (0) | 2024.04.26 |
| vercel로 배포 후 새로고침 시 404 이슈와 클라이언트 사이드 라우팅 (1) | 2024.03.01 |
| vercel로 배포 후 proxy 설정하여 CORS 에러 해결하기 (1) | 2024.03.01 |
| Could not resolve dependency:npm ERR! peer next@"^12 || ^13" from next-contentlayer@0.3.4 (0) | 2024.02.16 |