Я продолжаю получать эту ошибку после отправки сообщения «выбросить новую ошибку (‘undefined не является допустимым объектом uri или options.’)».

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Этот код написан в discord.js и предназначен для поиска чего-либо, введенного с помощью команды?search ______, он выдаст желаемый результат, затем выдаст новую ошибку (‘undefined не является допустимым объектом uri или options.’) и прекратит работу, спасибо.

 client.on("message", (message) => {
    if (message.content.startsWith("?search")) {
        var search = {
            url: "http://results.dogpile.com/serp?qc=imagesamp;q="   (message.content.replace('?search ', '')),
            method: "GET",
            headers: {
                "Accept": "text/html",
                "User-Agent": "Chrome"
            }
        };
    };


    request(search, function(error, response, responseBody) {
        if (error) {
            return;
        }


        $ = cheerio.load(responseBody);


        var links = $(".image a.link");

        var urls = new Array(links.length).fill(0).map((v, i) => links.eq(i).attr("href"));

        console.log(urls);

        if (!urls.length) {
   
            return;
        }

        const embed = new MessageEmbed();
        embed.setTitle("Search incommminggggg");
        embed.setColor("#00ffff");
        embed.setImage( urls[Math.floor(Math.random() * urls.length)]);
        message.channel.send(embed);
    });

});
  

Ответ №1:

Код отсутствует там, где выдается ошибка, но я предполагаю, что он находится в этой строке:

 request(search, function(error, response, responseBody) {...});
  

Причина довольно проста search undefined . Это происходит, когда ваш оператор if не соответствует.

 if (message.content.startsWith("?search")) {
    var search = {...};
};
  

Если a message не начинается с "?search" , то search переменная никогда не устанавливается и будет undefined .


Убедитесь search , что он установлен в любом случае:

 if (message.content.startsWith("?search")) {
    var search = {...};
} else {
    var search = {...};
};
  

Или, если вам не нужно ничего делать, если сообщение не начинается с "?search" , вы можете использовать защитное предложение для досрочного завершения обратного вызова.

 if (!message.content.startsWith("?search")) return;
var search = {...};
  

Комментарии:

1. @samleews, убедившись search , что он установлен. Я обновил ответ.