fix: dev crashing when middleware crash

Signed-off-by: Florian BOUILLON <f.bouillon@aptatio.com>
This commit is contained in:
Florian Bouillon 2023-12-06 11:00:49 +01:00
parent 211cfc4197
commit b344bdb849

View File

@ -1,4 +1,5 @@
import { defineMiddleware } from "astro/middleware" import { defineMiddleware } from "astro/middleware"
import ResponseBuilder from 'libs/ResponseBuilder'
// `context` and `next` are automatically typed // `context` and `next` are automatically typed
export default defineMiddleware(async ({ request }, next) => { export default defineMiddleware(async ({ request }, next) => {
@ -6,7 +7,21 @@ export default defineMiddleware(async ({ request }, next) => {
console.log(`${prefix} ${request.url}`) console.log(`${prefix} ${request.url}`)
// can crash if response crash // can crash if response crash
const res = await next() try {
console.log(`${prefix} ${'status' in res ? res.status : '???'} ${request.url}`) const res = await next()
return res
console.log(`${prefix} ${res.status} ${request.url}`)
return res
} catch (e) {
console.log(`${prefix} 500 ${request.url}`)
console.error('-------------------------------')
console.error(e)
console.error('-------------------------------')
return new ResponseBuilder()
.status(500)
.body('An error occured while processing your request')
.build()
}
}) })