Skip to content

Commit

Permalink
refactor: do not 404 in middleware mode
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jan 13, 2021
1 parent 960b420 commit 2bee4be
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 13 deletions.
12 changes: 7 additions & 5 deletions packages/vite/src/node/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,13 +336,15 @@ export async function createServer(
app.use(indexHtmlMiddleware(server, plugins))

// handle 404s
app.use((_, res) => {
res.statusCode = 404
res.end()
})
if (!serverConfig.middlewareMode) {
app.use((_, res) => {
res.statusCode = 404
res.end()
})
}

// error handler
app.use(errorMiddleware(server))
app.use(errorMiddleware(server, serverConfig.middlewareMode))

if (httpServer) {
// overwrite listen to run optimizer before server start
Expand Down
21 changes: 13 additions & 8 deletions packages/vite/src/node/server/middlewares/error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,11 @@ function cleanStack(stack: string) {
}

export function errorMiddleware(
server: ViteDevServer
server: ViteDevServer,
allowNext = false
): Connect.ErrorHandleFunction {
// note the 4 args must be kept for connect to treat this as error middleware
return (err: RollupError, _req, res, _next) => {
return (err: RollupError, _req, res, next) => {
const msg = buildErrorMessage(err, [
chalk.red(`Internal server error: ${err.message}`)
])
Expand All @@ -49,12 +50,16 @@ export function errorMiddleware(
timestamp: true
})

res.statusCode = 500
res.end(() => {
server.ws.send({
type: 'error',
err: prepareError(err)
})
server.ws.send({
type: 'error',
err: prepareError(err)
})

if (allowNext) {
next()
} else {
res.statusCode = 500
res.end()
}
}
}

0 comments on commit 2bee4be

Please sign in to comment.