我试图在android上实现一个以节点为后端服务器的用户注册系统。
我在本地主机上使用Node 4.4.5,并使用“电子邮件验证”- https://www.npmjs.com/package/email-verification包
因此,根据android的要求,发送了一封带有验证链接的确认邮件,该邮件运行良好。
单击链接时,发出一个GET请求,确认用户,将其添加到MongoDB数据库,然后发送一个JSON响应。
向用户发送一封电子邮件,说明帐户已被确认。
发送确认电子邮件后,服务器崩溃。
这是我的密码--
router.get('/email-verification/:URL', function(req, res, next){
var url = req.params.URL;
console.log('email-verify-start');
nev.confirmTempUser(url, function(err, user) {
console.log('error is :' + err);
if (user) {
nev.sendConfirmationEmail(user.email, function(err, info) {
if (err) {
console.log('sending_conf_email_failed');
return res.json({'email': 'sending_conf_email_failed'});
}
console.log('user_confirmed');
res.json({
'email': 'user_confirmed'
});
console.log('Done, and confirmed');
});
} else {
console.log('conf_temp_ser_failed');
return res.json({'email': 'conf_temp_ser_failed'});
}
});
});这是我的日志--
error is :null
user_confirmed
Done, and confirmed
GET /register/email-verification/SfC9VlnUv91RkFBHDURIbHodnYme0RdfbTYBj0I4oXyywrpW 200 5177.724 ms - 26
h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\src\smtp-transport.js:136
return callback(null, info);
^
TypeError: callback is not a function
at h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\src\smtp-transport.js:136:20
at h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:279:20
at SMTPConnection._actionStream (h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:966:16)
at SMTPConnection.<anonymous> (h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:594:14)
at SMTPConnection._processResponse (h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:516:16)
at SMTPConnection._onData (h:\myapp\coep_updates\node_modules\email-verification\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:353:10)
at emitOne (events.js:77:13)
at TLSSocket.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:153:18)
at TLSSocket.Readable.push (_stream_readable.js:111:10)
at TLSWrap.onread (net.js:531:20)
Process finished with exit code 1直到服务器崩溃,一切都正常。我接收到所有的电子邮件并正确地发送回复,我甚至在浏览器上看到了JSON响应{"email":"user_confirmed"}。唯一的问题是服务器随后崩溃。
编辑1
我试着添加返回语句--仍然是同样的问题。我把它们加在这里--
return res.json({
'email': 'user_confirmed'
});我还试着加了一个回音--
res.json({
'email': 'user_confirmed'
});
return;到现在还没有运气..。
编辑2
好的。因此,这实际上是GitHUB上的一个未决问题,这是一个bug。
https://github.com/whitef0x0/node-email-verification/issues/44
发布于 2016-07-08 09:22:06
所以,我用这种方式尝试了GitHUB的解决方案,现在它运行得完美无缺,尽管官方的修补程序还没有发布.
在模块的源文件夹中,在'index.js‘->文件中
Go to line 340 -- 你会看到这条线
callback = options.shouldSendConfirmation;改为->
callback = function(){};希望这能帮上忙。
发布于 2016-07-08 10:31:43
可以将nev.sendConfirmationEmail方法更改为将回调作为第三个参数:
nev.sendConfirmationEmail(user.email, function(err, info) {
if (err) {
console.log('sending_conf_email_failed');
return res.json({'email': 'sending_conf_email_failed'});
}
console.log('user_confirmed');
res.json({
'email': 'user_confirmed'
});
console.log('Done, and confirmed');
}, function(){});https://stackoverflow.com/questions/38213193
复制相似问题