我正在尝试在我的项目中使用Meteor类。在我的类中,我使用了一个npm模块nodemailer
,该模块提供了一个自定义处理程序来设置socket,如下所示:
var nodemailer = require('nodemailer');
var transport = nodemailer.createTransport({....});
transpot.getSocket = function (options, callback) { // <-- here
console.log('get socket');
}
所以我尝试使用类在Meteor代码中包装它:
var nodemailer = Meteor.npmRequire('nodemailer');
class TestNodemailerMeteor {
constructor(options) {
//....
this.name = options.name;
}
initMailer(){
this.transport = nodemailer.createTransport({//set options});
this.transport.getSocket = this.getSocket;
}
getSocket(options, callback){
//
console.log(this.name); // this.name is undefined, lost this context here
}
}
问题是,当模块调用transport.getSocket
时,我失去了所有变量和方法的类上下文。有没有办法将模块函数附加到类对象方法上,而不会失去类上下文?