redhare-demo/helpers/api/error-handler.js

51 lines
1013 B
JavaScript

import { NextResponse } from 'next/server'
import { setJson } from './set-json'
function errorHandler(err) {
if (typeof err === 'string') {
// custom application error
const is404 = err.toLowerCase().endsWith('not found')
const status = is404 ? 404 : 400
return NextResponse.json(
setJson({
message: err,
code: status,
}),
{ status }
)
}
if (err.name === 'JsonWebTokenError') {
// jwt error - delete cookie to auto logout
return NextResponse.json(
setJson({
message: 'Unauthorized',
code: '401',
}),
{ status: 401 }
)
}
if (err.name === 'UserExistsError') {
return NextResponse.json(
setJson({
message: err.message,
code: '422',
}),
{ status: 422 }
)
}
// default to 500 server error
console.error(err)
return NextResponse.json(
setJson({
message: err.message,
code: '500',
}),
{ status: 500 }
)
}
export { errorHandler }