ChunkLoadError
9439 ワード
開発環境では、ChunkLoadErrorブロックに関連するエラーで、導入後にサービスを使用するユーザーから発見されたエラーがあります.
原因は以下の通り.
React Lazyを使用してページを動的にロードする場合、コード変更(更新など)が発生すると、ブラウザが既存のブロックを様々な理由(キャッシュ、既存のサイトに常駐するユーザ)でロードしようとしたため、ChunLoadErrorが発生します.
解決策はいろいろありますが、私が解決した方法は、最初は遅延ロード中のエラーを見つけて再ロードすることで解決しましたが、エラーを見つけて再ロードするだけでは無限ループが発生する可能性があるため、ローカルストレージも利用しました. https://www.ozkary.com/2021/11/react-static-web-apps-chunk-load-error.html
の原因となる
原因は以下の通り.
React Lazyを使用してページを動的にロードする場合、コード変更(更新など)が発生すると、ブラウザが既存のブロックを様々な理由(キャッシュ、既存のサイトに常駐するユーザ)でロードしようとしたため、ChunLoadErrorが発生します.
解決する
解決策はいろいろありますが、私が解決した方法は、最初は遅延ロード中のエラーを見つけて再ロードすることで解決しましたが、エラーを見つけて再ロードするだけでは無限ループが発生する可能性があるため、ローカルストレージも利用しました.
const checkReload = async (fn: () => ComponentPromise) => {
const isReloaded = JSON.parse(getItem(KEY) || 'false');
try {
const component = await fn();
setItem(KEY, 'false');
return component;
} catch (error) {
if (!isReloaded) {
setItem(KEY, 'true');
window.location.reload();
}
throw error;
}
};
function customLazy(
component: () => ComponentPromise,
): React.LazyExoticComponent<React.ComponentType<any>> {
return lazy(() => checkReload(component));
}
export default customLazy;
また,発生する可能性のあるエラーを防止するために,ブロックローディングエラーに加えて,ユーザは既存のErrorBoundaryを用いて,空白の画面が見えないようにした.<Routes>
{ROUTE.map(({ path, Component, auth }) => (
<Route
key={path}
path={path}
element={
<ErrorBoundary>
<Suspense fallback={null}>
<Component />
{path !== PATH.NOT_FOUND && <PlayerContainer />}
</Suspense>
</ErrorBoundary>
}
/>
))}
</Routes>
Reference
Reference
この問題について(ChunkLoadError), 我々は、より多くの情報をここで見つけました https://velog.io/@jiseong/ChunkLoadErrorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol