Kijan pou m jere erè nan yon API Express pou kliyan an jwenn bon mesaj?

poze a month ago332 gadeht

6

Lè yon bagay mal pase nan API m nan, pafwa kliyan an resevwa yon paj HTML erè, pafwa yon 500 san detay. Kijan pou m gen yon fòma erè ki konsistan?

Dyagnostik IA

Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.

poze a month ago

1 Repons

7
✓
✓ Repons yo aksepte

Kreye yon klas erè pa w, epi yon sèl middleware erè nan fen app la:

export class AppError extends Error {
  constructor(status, code, message) {
    super(message);
    this.status = status;
    this.code = code;
  }
}

// nan yon route
if (!itilizate) throw new AppError(404, 'NOT_FOUND', 'Itilizatè sa a pa egziste');

// dènye middleware nan app.js
app.use((err, req, res, next) => {
  const status = err.status ?? 500;
  if (status >= 500) console.error(err); // log detay yo sou sèvè a sèlman
  res.status(status).json({
    error: {
      code: err.code ?? 'INTERNAL',
      message: status >= 500 ? 'Yon erè entèn rive' : err.message,
    },
  });
});

Pwen enpòtan: - Pa janm voye stack trace bay kliyan an an pwodiksyon. - Itilize bon kòd HTTP yo: 400 (done pa bon), 401 (pa konekte), 403 (pa gen dwa), 404, 409 (konfli), 422, 429. - Ak Express 4, vlope rout async yo pou erè yo rive nan middleware la (Express 5 fè sa pou kont li).

Konekte pou di lòt moun si li te mache.

answered a month ago

Sign in and verify your email to post an answer.