File size: 1,014 Bytes
6e13570
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const logger = require("../utils/logger");

// eslint-disable-next-line no-unused-vars
function errorHandler(err, req, res, next) {
  let status = err.status || 500;

  // Multer surfaces file-size/type problems as plain Errors/MulterErrors
  // without a status code — treat those as client errors (400), not
  // server failures.
  if (err.name === "MulterError" || /Unsupported file type/.test(err.message || "")) {
    status = 400;
  }

  logger.error("Unhandled error", {
    message: err.message,
    status,
    path: req.path,
    method: req.method,
    // stack only ever goes to server-side logs, never to the client
    stack: err.stack,
  });

  const isProd = process.env.NODE_ENV === "production";
  res.status(status).json({
    error: status === 500 && isProd ? "Something went wrong. Please try again later." : err.message,
  });
}

function notFound(req, res) {
  res.status(404).json({ error: "Not found." });
}

module.exports = { errorHandler, notFound };