V
Где-то отправляешь ответ дважды, res.end() не нужен вообще
V
https://expressjs.com/en/api.html#res.end
Anonymous
Петю жалко
Anonymous
он - ошибка
V
Петр Ошибкин
Anonymous
Нельзя отправлять ошибку клиенту, если это смотрит мордой в интернет. Ты ж любому чуваку просто даёшь stacktrace своего проекта
Anonymous
Андрей
Андрей
Андрей
Anonymous
Андрей
V
Мне всегда казалось, что res.send завершает запрос, так что, если я прав, то ты отправляешь ответ с помощь res.end и res.end
V
убери res.end
V
посмотри что будет
V
ну или можешь res.send(err.message)
V
если сообщение какие-то удобоваримые делать будешь
Андрей
У меня выше есть вот такой код, при ошибке возвращает клиенту 500 и сообщение ошибки, и вроде бы всё хорошо работает
Андрей
А вот именно с бд проблемы появились
Anonymous
Anonymous
ну или можешь res.send(err.message)
Андрей
V
скинь весь код хендлера
Андрей
https://pastebin.com/pYXcj0f7
Dima
Так у тебя наверное другие ивенты формы потом тоже срабатывают?
Андрей
Кстати
Dima
form.on('file') сначала, ты тут отправил ответ уже, а потом какой-нибудь form.on('end')
Dima
Где ты опять посылаешь
Андрей
срабатывает form.on('error')
Андрей
Андрей
Вот если убрать часть с бд и оставить только fs.rename() то всё работает нормально
V
form.on end наверное срабатывает
V
потому что ты сначала его делаешь
Dima
Убери form.on('error' и form.on('end' для проверки, всё заработает
V
а потом у тебя бд отрабатывает
Андрей
В самом конце срадатывает
form.on('error', function (err) {
console.log('An error has occured: \n' + err);
res.status(500).send(err);
return res.end();
});
Андрей
Dima
Сто раз уже сказали, что нельзя два раза отправлять ответ. А у тебя это происходит
Андрей
Но ведь у меня вначале if() и если он отдаёт ошибку то на этом всё заканчивается
Dima
Ты сам говоришь что у тебя потом срабатывает on error (почему-то) который делает send второй раз
Андрей
3 часа долбаться чтобы в итоге удалить 10 строк кода....
Dima
В идеале тебе надо переделать так, чтобы on error остался
V
V
Так что ничего не заканчивается :)
V
Кстати, вместо ифов модер просто делать return res.send
Андрей
Андрей
не совсем понимаю о чём идёт речь
V
http://prntscr.com/fd4rx4
Андрей
V
on error срабатывает если в форме ошибка или в чтении твоего файла
V
почитай доки от либы
V
когда он срабатывает
Anonymous
По хорошему ты не должен ничего делать с ошибкой внутри контроллера, а вызывать next(err), а вот в middleware для ошибок уже отрабатывать. Это позволяет избежать странных ситуаций.
Anonymous
Ну и 400/401 и т.д. ошибки должны отдаваться примерно так: next(new HttpError(...)).
Андрей
Спасибо за разъяснения
V
работы с бд в отдельный файл выноси, тогда неявных ошибок еще меньше будет :)
Андрей
А чем прекрасно то?
Андрей
А вы видать всегда пишите безошибочный код
Vitaliy
Я все время делаю ошибки, но делаю это быстро! В этом мне помогает WebStorm, тесты и Wallaby.js
А о чем речь вообще? :)
Андрей
Да уже вроде бы не о чем
Anonymous
Anonymous
Есть чат по вебпаку? Есть вопрос
Anonymous
Короче , от чего зависит WebpackJSONP? Кто-то знает?
Алексей
Надо состряпать печатную форму и отдать пользователю. Кто-то подскажет чем реализовать ?
Таймураз
Ребят, всем привет
Где глянуть инфу о митапах, конференциях и тд?
Алексей
очень молодец. я с тем же успехом могу и html передавать... или txt))) ты чем пользуешься? Нагуглить и потратить день времени на различные способы я могу. Охото услышать рабочий и провереный инструмент.
Задача красивый текст + переменные
Сергей
всем привет
вопрсец немного не по теме
на сервере
есть раздел /dev/testtest
который смонтирован по пути /
как посмотреть содержимое этого раздела, подскажите?
Таймураз
Таймураз
https://t.me/joinchat/Be4rsT7VI1LxrHaMR3pezQ
Сергей
ну люди которые работают с nodejs не могут быть не накомы с сервером))
Сергей
спасибо за ссылку)
Таймураз
Перечитал то, что написал
Утро понедельника не может быть добрым =/