类型错误: 无法读取 null 的属性'body'



现在正在努力让这个工作;

const superagent = require("snekfetch");
const Discord = require('discord.js')

module.exports = {
name: "cat",
category: "fun",
description: "Sends a random image of a cat",
usage: "[command]",
run: async (client, message, args, level) => {
//command
superagent.get('https://nekos.life/api/v2/img/meow')
.end((err, response) => {
const lewdembed = new Discord.MessageEmbed()
.setTitle("Random cat")
.setImage(response.body.url)
.setColor(`#00FF00`)
.setFooter(`owo`)
.setURL(response.body.url);
message.channel.send(lewdembed);
})
}
};

抛出此错误;

TypeError: Cannot read property 'body' of null
at /home/runner/Manias-Bot/commands/fun/cat.js:16:22
at /home/runner/Manias-Bot/node_modules/snekfetch/src/index.js:212:22

我可以看到(response.body.url(的错误,但不确定如何解决这个问题。有什么帮助吗?

首先,snekfetch已被弃用,您应该使用node-fetch

请参阅https://www.npmjs.com/package/snekfetch

其次,错误是因为responsenull——几乎可以肯定的是,因为您在尝试获取该资源时出现了错误。我的猜测是ECONNREFUSED,但你可以通过检查你得到的errresponse的值来确认这一点,即

superagent.get('https://nekos.life/api/v2/img/meow')
.end((err, response) => {
console.log(err, response)
})

这给了我…

[Error: connect ECONNREFUSED 0.0.0.0:443] {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '0.0.0.0',
port: 443
} null

正如你所看到的,服务器拒绝了请求,而responsenull

要解决此问题,您应该使用一个不推荐使用的包,并确保您正在尝试获取您有权限/访问权限的资源。

在获取任何东西时,最好先检查一下是否有任何错误,然后再尝试对预期结果进行处理。

最新更新