现在正在努力让这个工作;
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
其次,错误是因为response
是null
——几乎可以肯定的是,因为您在尝试获取该资源时出现了错误。我的猜测是ECONNREFUSED
,但你可以通过检查你得到的err
和response
的值来确认这一点,即
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
正如你所看到的,服务器拒绝了请求,而response
是null
要解决此问题,您应该使用一个不推荐使用的包,并确保您正在尝试获取您有权限/访问权限的资源。
在获取任何东西时,最好先检查一下是否有任何错误,然后再尝试对预期结果进行处理。