Есть много вопросов с моей проблемой, но я попробовал некоторые решения, но никто не работал.
Я получаю следующую ошибку каждый раз, когда я пытаюсь выполнить вход в систему:
Ошибка: невозможно установить заголовки после их отправки.в validateHeader (_http_outgoing.js: 491: 11) в ServerResponse.setHeader (_http_outgoing.js: 498: 3) в ServerResponse.header (/ home / ale / PycharmProjects / veople / webapp / functions / node_modules / express / lib / response).js: 767: 10) в userService.checkUser (/home/ale/PycharmProjects/veople/webapp/functions/index.js:54:18) в Object.firebase.auth.onAuthStateChanged.firebaseUser [как следующий] (/ home /ale / PycharmProjects / veople / webapp / functions / auth.js: 69: 17) на /home/ale/PycharmProjects/veople/node_modules/@firebase/util/dist/index.node.cjs.js:1361:22 в /home/ale/PycharmProjects/veople/node_modules/@firebase/util/dist/index.node.cjs.js: 1465: 21 at at process._tickCallback (внутренний / process / next_tick.js: 189: 7)
это мой index.js в узле:
app.get('/user', (request, response) => {
userService.checkUser( (firebaseUser) => {
if (firebaseUser) {
response.render('user', {firebaseUser});
}else {
// response.redirect('/');
response.redirect('/');
}
response.set('Cache-Control', 'public, max-age=300, s-maxage=600');
response.render('index');
});
});
app.post("/login", (req, res) => {
var userEmail = req.body.emailLogin;
var userPassword = req.body.passwordLogin;
console.log(userEmail, userPassword); //This log the email and the password
userService.loginUser(
userEmail,
userPassword,
(error, authData) => {
if (error) {
return res.status(401).send("Unauthorized");
} else {
res.redirect('/user');
//console.log(authData);
return authData
}
}
);
});
и в auth.js у меня есть:
function loginUser(email, password, callback) {
console.log(email, password);
firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then((firebaseUser) => {
// Success
console.log("Ok, lovely I'm logged");
callback(null, firebaseUser);
//console.log(firebaseUser);
return firebaseUser
})
.catch((error) => {
callback(error);
});
}
function checkUser( callback ) {
firebase
.auth()
.onAuthStateChanged(firebaseUser => {
if(firebaseUser) {
// console.log(firebaseUser);
callback(firebaseUser);
return firebaseUser;
} else {
console.log('pp');
callback(null);
return firebaseUser;
}
});
}
Пока я запускаю сервер на моей машине, логин работает, но я все равно получаю ошибку в своем журнале, вместо этого, если я разверну свой проект на firebase, я не смогу использовать функцию логина.
ProbabПроблема в том, что эта ошибка.
Может кто-нибудь объяснить мне, что я делаю не так?Спасибо
РЕДАКТИРОВАТЬ
После применения решения @molda я получаю:
ошибка: ошибка:Не удается установить заголовки после их отправки.в validateHeader (_http_outgoing.js: 491: 11) в ServerResponse.setHeader (_http_outgoing.js: 498: 3) в ServerResponse.header (/ home / ale / PycharmProjects / veople / webapp / functions / node_modules / express / lib / response).js: 767: 10) в ServerResponse.location (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/express/lib/response.js:884:15) в ServerResponse.redirect (/ home / ale / PycharmProjects /veople / webapp / functions / node_modules / express / lib / response.js: 922: 18) в userService.checkUser (/home/ale/PycharmProjects/veople/webapp/functions/index.js:51:22) в Object.firebase.auth.onAuthStateChanged.firebaseUser [как следующий] (/home/ale/PycharmProjects/veople/webapp/functions/auth.js:73:17) в / home / ale / PycharmProjects / veople / node_modules / @ firebase / util / dist/index.node.cjs.js:1361:22 at /home/ale/PycharmProjects/veople/node_modules/@firebase/util/dist/index.node.cjs.js:1465:21 at at process._tickCallback (внутренний /process / next_tick.js: 189: 7) 127.0.0.1 - - [06 / Apr / 2019: 10: 54: 29 +0000] "GET / logout HTTP / 1,1 "302 46" http://localhost:5000/" "Mozilla / 5,0 (X11;Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 71.0.3578.98 Safari / 537.36 OPR / 58.0.3135.127 "[хостинг] Ошибка приложения перезаписи / в локальную функцию: Ошибка: невозможно установить заголовки после их отправки.validateHeader (_http_outgoing.js: 491: 11) в ServerResponse.setHeader (_http_outgoing.js: 498: 3) в ServerResponse.header (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/exse/jsb): 767: 10) в ServerResponse.send (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/express/lib/response.js:170:12) в готовом (/ home / ale / PycharmProjects / veople / webapp/functions/node_modules/express/lib/response.js:1004:10) в /home/ale/PycharmProjects/veople/webapp/functions/node_modules/consolidate/lib/consolidate.js:876:7 в / home / ale /PycharmProjects / veople / webapp / functions / node_modules / consolidate / lib / consolidate.js: 161: 5 в Promise._execute (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/bluebird/js/release/debuggability.js: 313: 9) на Promise._resolveFromExecutor (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/bluebird/js/release/promise.js:483:18)при новом обещании (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/bluebird/js/release/promise.js:79:10)
на обещание (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/consolidate/lib/consolidate.js:154:10)
в Function.exports.handlebars.render (/home/ale/PycharmProjects/veople/webapp/functions/node_modules/consolidate/lib/consolidate.js:866:10)
по адресу /home/ale/PycharmProjects/veople/webapp/functions/node_modules/consolidate/lib/consolidate.js:181:27
по адресу /home/ale/PycharmProjects/veople/webapp/functions/node_modules/consolidate/lib/consolidate.js:101:5
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js: 511: 3)
РЕДАКТИРОВАТЬ 2
index.js:
function createDatauser(firebaseUid, name, lastname){
const docRef = db.collection('users').doc(firebaseUid);
const setData = docRef.set({
first: name,
last: lastname
});
}
...
app.get('/', (request, response) => {
userService.checkUser( (firebaseUser) => {
if (firebaseUser) {
console.log(firebaseUser.email)
}else {
console.log('not logged in');
}
// response.set('Cache-Control', 'public, max-age=300, s-maxage=600');
response.render('index', {firebaseUser});
});
});
...
app.post("/register", (req, res) => {
const nameRegister = req.body.name;
const surnameRegister = req.body.surname;
const emailRegister = req.body.emailRegister;
const passwordRegister = req.body.passwordRegister;
const confirmPasswordRegister = req.body.confirmPasswordRegister;
console.log(emailRegister, passwordRegister);
userService.registerUser(
emailRegister,
passwordRegister,
(error, authData) => {
if (error) {
return res.status(401).send("Unauthorized");
} else {
res.redirect('/user');
console.log(authData);
createDatauser(authData.user.uid, nameRegister, surnameRegister);
return authData
}
}
);
});
...
app.get("/logout", (req, res) => {
userService.logoutUser();
res.redirect('/');
});
auth.js
function registerUser(email, password, callback) {
console.log(email, password);
firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then((firebaseUser) => {
// Success
//console.log("Ok, lovely I'm registred", firebaseUser);
callback(null, firebaseUser);
return firebaseUser
})
.catch((error) => {
// Error Handling
// var errorCode = error.code;
// var errorMessage = error.message;
//console.log(errorCode); //auth/user-not-found
//console.log(errorMessage); //There is no user record corresponding to this identifier. The user may have been deleted.
callback(error);
});
}
...
function logoutUser(){
firebase.auth().signOut()
.then(() => {
return null;
// Sign-out successful.
})
.catch((error) => {
return error;
// An error happened.
});
}