Skip to content

Commit db5ab1d

Browse files
benmccannbluwy
andauthored
fix: show error if vite client cannot be loaded (#17419)
Co-authored-by: bluwy <bjornlu.dev@gmail.com>
1 parent 8e1abe5 commit db5ab1d

File tree

1 file changed

+18
-4
lines changed
  • packages/vite/src/node/server/middlewares

1 file changed

+18
-4
lines changed

packages/vite/src/node/server/middlewares/error.ts

+18-4
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,24 @@ export function errorMiddleware(
7777
<meta charset="UTF-8" />
7878
<title>Error</title>
7979
<script type="module">
80-
import { ErrorOverlay } from '/@vite/client'
81-
document.body.appendChild(new ErrorOverlay(${JSON.stringify(
82-
prepareError(err),
83-
).replace(/</g, '\\u003c')}))
80+
const error = ${JSON.stringify(prepareError(err)).replace(
81+
/</g,
82+
'\\u003c',
83+
)}
84+
try {
85+
const { ErrorOverlay } = await import('/@vite/client')
86+
document.body.appendChild(new ErrorOverlay(error))
87+
} catch {
88+
const h = (tag, text) => {
89+
const el = document.createElement(tag)
90+
el.textContent = text
91+
return el
92+
}
93+
document.body.appendChild(h('h1', 'Internal Server Error'))
94+
document.body.appendChild(h('h2', error.message))
95+
document.body.appendChild(h('pre', error.stack))
96+
document.body.appendChild(h('p', '(Error overlay failed to load)'))
97+
}
8498
</script>
8599
</head>
86100
<body>

0 commit comments

Comments
 (0)