我想用nodeJS和firebase構建一個註冊頁面。獲取錯誤:錯誤:發送後無法設置標題。在重新渲染頁面
當用戶收到註冊錯誤時,頁面將重新加載,並向用戶顯示錯誤。 然後,如果用戶嘗試註冊,他得到了想要的頁面,但我得到:
Error: Can't set headers after they are sent.
幾個小時的研發之後,我覺得我已經明白這個問題。 我的代碼可能已經處於正文或已完成狀態,但某些功能試圖設置標題或狀態碼
有了這些知識,我試圖解決這個錯誤,但我沒有完成。
這裏是我的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;
我希望有人能幫助我。
我認爲你正試圖兩次重定向。首先到'/'然後到'/ users/home',因爲一旦第一次重定向發生,你不會停止代碼繼續。 –
@GetOffMyLawn謝謝你的回答!你知道我怎樣才能阻止代碼繼續?像休息一樣? –