오늘은 최근에 프로젝트를 진행하면서 마주쳤던 chunk load error를 해결한 과정을 설명해보려고 한다
chunk
chunk란 코드 스플릿팅을 해서 나뉘어진 js 파일 조각? 이라고 생각하면 된다
내가 진행하고 있는 프로젝트는 nextjs를 사용하고 있는데 nextjs는 기본적으로 코드 스플릿팅을 제공한다
chunk load error
chunk load error는 말 그대로 chunk라는것을 load 하다가 생긴 error이다
다양한 이유로 chunk를 load하다가 error가 발생하겠지만
한개의 케이스만 말해보자면 코드 스플릿팅시 따로 설정을 안해주면 chunk 파일 이름은 계속 달라진다
그리고 chunk를 불러올때 캐싱된 chunk 파일 이름으로 불러온다면 없거나 이상한 파일이 가져와져서
chunk load error가 발생한다
resolve
나는 여러가지 방법을 찾던도중 잘모르겠어서 chatGPT한테 물어봤다 chatGPT의 답변은 webpack에서 빌드할때 파일 이름에 hash 값을 넣어 캐싱되지 않도록 하는것이였다
아래는 해당 내용의 코드이다
/** @type {import('next').NextConfig} */
const nextConfig = {
webpack: (config, { isServer }) => {
// Client-side specific settings
if (!isServer) {
config.output.filename = '[name].[contenthash].js';
config.output.chunkFilename = '[name].[contenthash].js';
config.optimization.splitChunks = {
chunks: 'all',
cacheGroups: {
default: false,
vendors: false,
common: {
name: 'common',
chunks: 'all',
minChunks: 2,
reuseExistingChunk: true,
enforce: true,
},
},
};
}
return config;
},
};
module.exports = nextConfig;
마무리
이번 에러는 다양한 해결 방법이 있어서 해결하기 수월했던것 같고 webpack과 code spliting에 대해 자세히 공부해야 할것 같다고 생각한다
728x90
'JS, TS' 카테고리의 다른 글
제발 프로미스나인 팬이라면 Promise 공부하세요🙏 (0) | 2024.08.17 |
---|---|
js는 단일 쓰레드잖아..!!!!!! (0) | 2024.08.01 |
tsconfig strict option (1) | 2024.06.11 |
복사에도 깊이가 있어? - 얕은 복사, 깊은 복사 알아보기 (0) | 2024.05.19 |
Intersection Observer로 element 관찰하기🧐 (0) | 2024.05.08 |