nodeJSとfirebaseで登録ページを作成しようとしています。エラーの取得:エラー:送信後にヘッダーを設定できません。ページを再レンダリングした後
ユーザーが登録エラーを取得すると、ページがリロードされ、エラーがユーザーに表示されます。ユーザーが登録しようとすると はその後、彼は目的のページになりますが、私は得る:研究の数時間後
Error: Can't set headers after they are sent.
を、私は問題を理解していると思います。 私のコードはすでにBodyまたはFinished状態になっていますが、一部の関数がヘッダーまたはstatusCodeを設定しようとしました
この知識を使って、このエラーを解決しようとしましたが、ここで
は私のuser.jsのです(コントローラ)コード:
var express = require('express');
var firebase = require('firebase');
var router = express.Router();
var User = require('../models/user');
var errors;
var errorMessage;
/**
sign up
*/
//sign up page route
router.get('/', function (req, res, next) {
console.log(errors);
if (errors) {
//Handle the errors and show them to the user
res.render('signUp', {error: true, errorMessage: errorMessage});
}else {
res.render('signUp', {title: 'Sign up', user: false, login: true});
}
});
// sign up request
router.post('/', function(req, res, next){
console.log(req.body.user.email + ' made a registration request');
console.log('Passwword: ' + req.body.user.password);
var email = req.body.user.email;
var password = req.body.user.password;
//reference to the firebase database
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
if (error) {
console.log(error.code);
console.log(error.message);
errorMessage = error.message;
errors = true;
res.redirect('/');
}
});
//if user is logged in redirect to homepage
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
res.redirect('/users/home');
console.log('User: ' + user.email + ' has logged in');
}
});
});
module.exports = router;
私は、誰かが私を助けることができると思います。あなたはノードのバージョン7+を使用している場合は、私は次のスニペットでやったように
私はあなたが二回リダイレクトしようとしていると思います。最初のリダイレクトが発生してもコードが続行されないようにするため、最初に '/'から '/ users/home'に移動します。 –
@GetOffMyLawnお返事ありがとうございます!コードの継続を止める方法を知っていますか?休憩のようなもの? –