client.on不是一个函数(与discord.js无关)



我正在创建自己的包,需要从包向主文件进行一些发射。

这个简化的模块实现了我想要实现的目标:

const fetch = require("node-fetch")
module.exports.client = async function(username,password,version) {
// Do login code here
this.emit("login", loginData)
}

然后我的测试代码用运行

var client = new require("../index").client("username","password","0.774")
client.on("login",function(data) {
console.log(data)
})

每次,程序返回

client.on("login",function(data) {
^
TypeError: client.on is not a function

有人遇到过类似的问题吗?这是我第一次制作这种风格的模块,所以请告诉我。

谢谢!

因为从index.js导出的函数client()是用async关键字声明的,所以它将返回Promise,而不是传递给return语句的实际值。假设从函数client()返回的值是一个具有on()函数的对象,那么为了访问此函数,您需要awaitclient()的结果,或者需要在promise中使用.then()函数。示例:

var clientPromise = new require("../index").client("username","password","0.774")
clientPromise.then(client => {
client.on("login",function(data) {
console.log(data)
})
});

虽然您也可以对client()函数的结果使用await,但这在所有上下文中都是不允许的,因此您必须将执行此操作的代码封装在另一个异步函数中。

最新更新