해결된 질문
작성
·
396
·
수정됨
0
질문1)
app.use((err, req, res, next) => {
res.locals.message = err.message;
res.locals.error = process.env.NODE_ENV !== "production" ? err : {};
res.status(err.status || 500);
res.render("error");
});
이 부분에서 err, req, res, next 매개변수에 각각 "매개 변수에는 암시적으로 'any' 형식이 포함됩니다.ts(7006)" 에러가 떠서
const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
console.error(err);
res.locals.message = err.message;
res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
res.status(err.status || 500);
res.render('error');
};
app.use(errorHandler);
이런식으로 타입을 달아줬는데 깃허브에선 errorHandler 분리까지만 되어있고 따로 타입을 달아놓지 않았더라고요. 이건 다른 방법으로 처리하셨나요?
질문2) @types/express 설치했는데 왜 해당 에러처리 미들웨어에서만 타입 적용이 되지 않은 것이죠?
답변 1
1
타입을 달아놓는게 맞습니다.
app.use에 req.res.next나 err.req.res.next 둘 다를 넣을 수 있어서 익스프레스는 자체적으로 둘 중에 무엇인지 구별할 수 없으므로 @types/express로는 안 되고 직접 타입을 정해줘야 합니다.
아하 감사합니다!