首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS:回调不是函数-电子邮件验证

NodeJS:回调不是函数-电子邮件验证
EN

Stack Overflow用户
提问于 2016-07-05 21:37:05
回答 2查看 813关注 0票数 1

我试图在android上实现一个以节点为后端服务器的用户注册系统。

我在本地主机上使用Node 4.4.5,并使用“电子邮件验证”- https://www.npmjs.com/package/email-verification

因此,根据android的要求,发送了一封带有验证链接的确认邮件,该邮件运行良好。

单击链接时,发出一个GET请求,确认用户,将其添加到MongoDB数据库,然后发送一个JSON响应。

向用户发送一封电子邮件,说明帐户已被确认。

发送确认电子邮件后,服务器崩溃。

这是我的密码--

代码语言:javascript
复制
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'});
    }
});
});

这是我的日志--

代码语言:javascript
复制
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

我试着添加返回语句--仍然是同样的问题。我把它们加在这里--

代码语言:javascript
复制
return res.json({
                'email': 'user_confirmed'
            });

我还试着加了一个回音--

代码语言:javascript
复制
res.json({
            'email': 'user_confirmed'
        });
return;

到现在还没有运气..。

编辑2

好的。因此,这实际上是GitHUB上的一个未决问题,这是一个bug。

https://github.com/whitef0x0/node-email-verification/issues/44

EN

回答 2

Stack Overflow用户

发布于 2016-07-08 09:22:06

所以,我用这种方式尝试了GitHUB的解决方案,现在它运行得完美无缺,尽管官方的修补程序还没有发布.

在模块的源文件夹中,在'index.js‘->文件中

代码语言:javascript
复制
Go to line 340 -- 

你会看到这条线

代码语言:javascript
复制
callback = options.shouldSendConfirmation;

改为->

代码语言:javascript
复制
callback = function(){};

希望这能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2016-07-08 10:31:43

可以将nev.sendConfirmationEmail方法更改为将回调作为第三个参数:

代码语言:javascript
复制
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(){});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38213193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档