Node Express "favicon.ico" не найдена ошибка - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь загрузить фотографию через URL-адрес, переданный в виде строки запроса с помощью Express, но каждый раз, когда я пытаюсь его использовать, я получаю Error: Invalid URI "favicon.ico" Есть ли способ заставить мой браузер прекратить запрашивать значок ? Для загрузки изображений я использую пакет image-downloader ( страница NPM )

Код:

app.get('/:url', (req, res) => {
let url = req.params.url;
const options = {
    url: url,
    dest: /path'
};
download.image(options)
    .then(({ filename, image }) => {
        console.log('File saved to ', filename);
})
    .catch((err) => {
        console.log(err);
    });
res.send("Done");

}); * * 1 010

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вероятно, проще всего создать маршрут для favicon.ico на вашем сервере.

app.get('/favico.ico', (req, res) => {
    res.sendStatus(404);
});

Конечно, вы могли бы на самом деле также отправить действительный значок, но это, по крайней мере, предотвратит ошибку на вашем сервере Express.

К вашему сведению, это не имеет ничего общего с image-downloader. Это связано с тем, что браузер запрашивает значок favico.ico, который он использует для отображения в строке URL (и некоторых других местах пользовательского интерфейса браузера). Если ваш сервер возвращает 404 для favicon.ico, браузер будет использовать общий значок в своем пользовательском интерфейсе.

Если вы хотите создать себе простой favico.ico, вы можете перейти сюда , и это поможет вам сгенерировать его, а затем вы можете изменить вышеуказанный маршрут на:

app.get('/favico.ico', (req, res) => {
    res.sendFile("myfavico.ico");
});
0 голосов
/ 12 ноября 2018

Попробуйте использовать другой пакет, например модуль запроса . Я верю, что с этим справились.

var fs = require('fs'),
request = require('request');

var download = function(uri, filename, callback){
  request.head(uri, function(err, res, body){
    console.log('content-type:', res.headers['content-type']);
    console.log('content-length:', res.headers['content-length']);

    request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
  });
};

download('https://www.google.com/images/srpr/logo3w.png', 'google.png', function(){
  console.log('done');
});
...