Javascript 未定义';这';尝试在类内调用emit方法时从EventEmitter扩展类
我试图使用自定义事件发射器来处理webhook,但当从类中调用方法时,我总是将“this”作为未定义的 serviceWebhook.jsJavascript 未定义';这';尝试在类内调用emit方法时从EventEmitter扩展类,javascript,node.js,Javascript,Node.js,我试图使用自定义事件发射器来处理webhook,但当从类中调用方法时,我总是将“this”作为未定义的 serviceWebhook.js class WebhookHandler extends EventEmitter{ constructor (){ super(); } receiver(req, res){ try { res.sendStatus(200); if (req.body && req.body.acti
class WebhookHandler extends EventEmitter{
constructor (){
super();
}
receiver(req, res){
try {
res.sendStatus(200);
if (req.body && req.body.action) {
this.emit(req.body.action, req.body)
}
} catch (error) {
console.log(error)
}
}
}
module.exports = {
WebhookHandler: WebhookHandler
}
var webhookh = new serviceWebhook.WebhookHandler();
router.post('/webhookendpoint', webhookh.receiver);
webhookh.on('action_one', function name(message) {
console.log('EMITTED')
console.log(message)
}
index.js
class WebhookHandler extends EventEmitter{
constructor (){
super();
}
receiver(req, res){
try {
res.sendStatus(200);
if (req.body && req.body.action) {
this.emit(req.body.action, req.body)
}
} catch (error) {
console.log(error)
}
}
}
module.exports = {
WebhookHandler: WebhookHandler
}
var webhookh = new serviceWebhook.WebhookHandler();
router.post('/webhookendpoint', webhookh.receiver);
webhookh.on('action_one', function name(message) {
console.log('EMITTED')
console.log(message)
}
这是我得到的错误:
TypeError:无法读取未定义的属性“emit”
我也尝试过这个:
super.emit(req.body.action, req.body)
但是我得到了这个错误:
TypeError:无法读取未定义的属性“\u events”将WebhookHandler类实例的receiver方法传递给路由器的回调会移动该方法的词法范围。 试试:
router.post('/webhookendpoint',webhookh.receiver.bind(webhookh))代码>
这将把回调中的范围绑定到WebhookHandler实例的范围。使用router.post('/webhookendpoint',(req,res)=>webhookh.receiver(req,res)),查看bindThank代码>似乎也起作用