сервер модуля запроса узла падает при передаче неверного URL - PullRequest
0 голосов
/ 05 июля 2019

Я боролся с этим в течение 2 дней: / Я использую экспресс-запрос для загрузки внешних файлов на сервер ...

var dest = "downloads/imgs";
var filename = "image";
var url = "http://pngimg.com/uploads/spongebob/spongebob_PNG27.png"

var file = fs.createWriteStream(dest + "/" + filename +     path.extname(url));

request.get(url)
.on('error', function(err) {
    console.log(err);
    return;
}).pipe(file);

file.on('error', function(err) {
    file.end();
});
file.on('finish', function() {
    file.close();
});

Это отлично работает. За исключением случаев, когда я вставляю неправильный URL, я получаю неверную ошибку URI, и сервер падает, вместо того, чтобы перехватить ошибку. Любая идея, почему возврат on.error не работает?

1 Ответ

0 голосов
/ 05 июля 2019

Я думаю, что происходит, когда код пытается передать, несмотря на состояние ошибки в запросе http.Сделать файл ввода / вывода только при хорошей загрузке ...

var dest = "downloads/imgs";
var filename = "image";
var url = "http://pngimg.com/uploads/spongebob/spongebob_PNG27.png"

let fn = dest + "/" + filename +     path.extname(url);
var file = fs.createWriteStream(fn);

request
  .get(url)
  .on('error', function(err) {
    console.log('caught error ' + err);
    return;
  })  // instead of piping here...
  .on('response', function(response) {
    response.pipe(file);
    console.log(`wrote to ` + fn);
  })

file.on('error', function(err) {
    file.end();
});

file.on('finish', function() {
    file.close();
});
...