我正在尝试从sendMail创建一个可观察对象,目前我的测试是这样的:
/// <reference path="../../typings/index.d.ts" />
import * as chai from "chai";
let assert = chai.assert;
const Rx = require('rxjs');
var nodemailer = require('nodemailer');
describe("emailPlugin", function() {
it.only('should emit one value from a callback', function () {
let mailOptions = {
from: '"Fred Foo ?" <MY@gmail.com>', // sender address
to: 'YOUR@gmail.com', // list of receivers; comma seperated
subject: 'Hello ✔', // Subject line
text: 'Hello world ?', // plaintext body
html: '<b>Hello world ?</b>' // html body
};
let transporter = nodemailer.createTransport('smtps://MY%40gmail.com:MY@smtp.gmail.com');
let boundCallback = Rx.Observable.bindNodeCallback(transporter.sendMail);
boundCallback(mailOptions, function(error, info){
if(error){
return error;
}
return info.response;
}).subscribe(x => console.log(x), e => console.error(e));
});
});结果是一个错误:
[TypeError: Cannot convert undefined or null to object]
有人能帮帮我吗?
发布于 2016-12-13 18:40:25
我和你有完全一样的问题,我找到了解决它的方法。而不是:
let boundCallback = Rx.Observable.bindNodeCallback(transporter.sendMail);这对我来说很有效:
let boundCallback = Rx.Observable.bindNodeCallback((options: any, callback: any) => {
return transporter.sendMail(options, callback);
});我不知道为什么,在我看来,原来的形式应该是正确的。看起来TypeScript在处理sendMail函数的类型上有些困难。希望这能有所帮助!
https://stackoverflow.com/questions/39084119
复制相似问题