Я новичок в NodeJs разработке. В нашем проекте я столкнулся с двумя ситуациями, когда сервер nodejs аварийно завершает работу, не обращая внимания на перехват в try / catch и не обращаясь к обратному вызову if (err). (В Java это всегда приходит к уловке, поэтому мы можем справиться с этим)
- Я использую 'extract-zip', и в этой строке он падает для определенных файлов, созданных из нашей системы, как Кажется, он содержит лишнюю строку sh перед именем файла внутри zip. Вот часть кода для этого, и это внутри попытки catch
extract(filePath, { dir: extractFiledir }, function (err) {
if (err) {}
. Это приводит к сбою сервера с events.js:174
throw er; // Unhandled 'error' event
, говорящим: «Ошибка: недопустимые символы в fileName: images \ aa.jpg»
Я использую форму для чтения загруженного файла. Если я вызываю эту веб-службу без прикрепления файла, через некоторое время сервер снова падает, выдавая ошибку
events.js:174
, указанную выше, с сообщением «Ошибка: запрос прерван в IncomingMessage. (xxx \ node_modules \ formidable \ lib \coming_form. js: 122: 19) '
const form = new formidable.IncomingForm();
form.parse(req);
Мой вопрос заключается в том, как мы можем обрабатывать такие ошибки, не позволяя серверу обрабатывать sh произойдет. Пожалуйста, дайте мне знать, что мне здесь не хватает. Возможно, я что-то упустил в NodeJs, связанном с такой обработкой ошибок, о которой я не знаю.
ОБНОВЛЕНИЕ: Мне удалось исправить проблему 2 с помощью обратного вызова, например this
form.parse(req, (error, fields, files) => {
if (error) {
return;
} else {
//continue if no error
}
});
Но проблема 1 не приводит к ошибке, даже когда добавляется вот так.
extract(filePath, { dir: extractFiledir }, (err) => {
if (err) {
return;
} else {}