NodeJs неожиданные проблемы сбоев - как справиться - PullRequest
0 голосов
/ 12 января 2020

Я новичок в NodeJs разработке. В нашем проекте я столкнулся с двумя ситуациями, когда сервер nodejs аварийно завершает работу, не обращая внимания на перехват в try / catch и не обращаясь к обратному вызову if (err). (В Java это всегда приходит к уловке, поэтому мы можем справиться с этим)

  1. Я использую '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 {}
...