Использование простого request.js http client Я заметил, что иногда простой TypeError
может привести к сбою всего приложения узла. Взяв один из примеров:Предотвращение сбоя приложения Node TypeError
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Print the google web page.
}
})
Теперь возьмите гипотетическую ситуацию, когда Google не отвечает, а соединение просто зависает, то тайм-аут (в случае, если от Google!). Этот код просто сбрасывает приложение узла, так как response
не определено, поэтому response.statusCode
не может быть прочитан. Это пузырится в цикл обработки событий и вызывает сбой с ошибкой:
TypeError: Cannot read property 'statusCode' of undefined
Что это самый простой способ я могу предотвратить это? Я мог бы добавить проверку для значения error
перед проверкой для statusCode
, например:
request('http://www.google.com', function (error, response, body) {
if (!error) {
if (response.statusCode == 200) {
// do stuff
}
}
})
Но я предпочел бы не добавлять ненужные строки в приложение, если это возможно. Мне может быть что-то очевидное здесь! Любые указатели очень оценили. Благодарю.