import { css } from '@emotion/css'; import React, { ErrorInfo, useEffect } from 'react'; import { useLocation } from 'react-router-dom'; import { locationUtil, PageLayoutType } from '@grafana/data'; import { Button, ErrorWithStack, stylesFactory } from '@grafana/ui'; import { Page } from '../components/Page/Page'; interface Props { error: Error | null; errorInfo: ErrorInfo | null; } export function GrafanaRouteError({ error, errorInfo }: Props) { const location = useLocation(); const isChunkLoadingError = error?.name === 'ChunkLoadError'; useEffect(() => { // Auto reload page 1 time if we have a chunk load error if (isChunkLoadingError && location.search.indexOf('chunkNotFound') === -1) { window.location.href = locationUtil.getUrlForPartial(location, { chunkNotFound: true }); } }, [location, isChunkLoadingError]); // Would be good to know the page navId here but needs a pretty big refactoring return (
{isChunkLoadingError && (

Unable to find application file


Grafana has likely been updated. Please try reloading the page.


)} {!isChunkLoadingError && ( )}
); } const getStyles = stylesFactory(() => { return css` width: 500px; margin: 64px auto; `; });