2016-07-05 6 views
1

私はバックエンドサーバーとしてノードを持つアンドロイド上にユーザー登録システムを実装しようとしています。NodeJS:コールバックは関数ではありません - 電子メールの確認

私はローカルホスト上で、ノード4.4.5を使用して、パッケージ「電子メールの検証」を使用しています - https://www.npmjs.com/package/email-verification

だから、アンドロイドからの要求に応じて、確認用のリンクで確認メールが送信され、作業されています良い。

リンクがクリックされると、GETリクエストが行われ、ユーザーが確認され、MongoDBデータベースに追加され、JSON応答が送信されます。

アカウントが確認されたというメールがユーザーに送信されます。

確認メールを送信した後、サーバーがクラッシュします。

は、ここに私のcode--

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'}); 
    } 
}); 
}); 

そして、ここだ私のlog--サーバーがクラッシュしたティル

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"}をブラウザに表示します。唯一の問題は、後でサーバーがクラッシュすることです。

EDIT 1

私はまだ同じ問題をリターンstatements--を追加してみました。私はまた、2

[OK]を

EDIT ...今までreturn--

res.json({ 
      'email': 'user_confirmed' 
     }); 
return; 

ませ運を添加しない試みたhere--

return res.json({ 
       'email': 'user_confirmed' 
      }); 

それらを追加しました。これは実際にはGitHUBのオープンな問題ですが、これはバグとして報告されています。

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

+0

私も..同じ問題を抱えていると私はgithubので述べたように問題を解決することができませんでした..あなたは私にファイルを教えてください可能性があり回線番号340を変更する必要がありますか? –

+0

同じ問題@ Parag Vermaは、githubの解決策でも解決することができませんでした。ありがとう – kRAk3N

+0

@ kRAk3N私の答えを参照してください –

答えて

2

だから、私はこのようgithubのに解決策を試してみましたが、今では、モジュールのソースフォルダで

...公式の修正がリリースされていない場合でも、完璧に取り組んでいますファイル 'index.js' - >あなたはこの行が表示されます

Go to line 340 -- 

callback = options.shouldSendConfirmation; 

変更それを - >

callback = function(){}; 

・ホープ、このことができます...

+0

働いていますが、今私は確認の電子メールを2倍得た –

0

あなたのNEVを変更することができます。3番目の引数としてコールバックを含むように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(){}); 
+0

私はこれを試しましたが、それは動作しませんでした –

関連する問題