Answer the question
In order to leave comments, you need to log in
Why is the error page not rendering?
exports.post = function(req, res, next) {
const username = req.body.login;
const password = req.body.password;
const findUser = async () => {
return User.findOne({username});
}
const checkUser = async (user) => {
if (user) {
if (user.checkPassword(password)) {
return user;
} else {
throw createError(403, "Password is incorrect");
}
} else {
const user = new User({username, password}); // Вход и регистрация у меня совмещены
user.save((err) => {
if (err) {
throw err;
}
});
return user;
}
}
(async () => {
try {
const result = await findUser();
await checkUser(result) // Специально делаю ошибку в пароле
await res.send("Done"); // На клиенте проверяется, если "Done", то загружается страница, но сейчас возникает
// ошибка, и поэтому клиент не получает ответа
} catch (err) {
next(err); // Ошибка отправляется в app.use()
}
})();
}
app.use("/", indexRouter);
app.use((err, req, res, next) => {
next(err);
});
app.use((err, req, res, next) => {
res.locals.error = err;
res.status(err.status || 500); // доходит до сюда
res.render("error"); // Страница не рендерится, вместо этого выдаёт POST /login 403
});
form.onsubmit = function() {
const login = this.elements.userName.value;
const password = this.elements.password.value;
const data = {login, password}
fetch("/login", {method: "POST", body: JSON.stringify(data), headers: {"Content-type": "application/json"}})
.then(res => res.text())
.then(text => {
if (text === "Done") {
window.location.href = "/";
}
})
.catch(err => console.error(err));
this.elements.userName.value = "";
this.elements.password.value = "";
return false;
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question