当我两次登录时,我的主页本身就会调用两次或更多次,并出现一个错误。
将标头发送到客户端后无法设置标头 这是我的主要错误。每当我登录两次时,我都会收到此错误和我的
app.post('/main,function(req,res){
//called mant times
})
然后没有 之后,我的应用程序崩溃了。
我也在redirect()部分中使用了return语句,然后我也遇到了这种错误,我花了很多时间解决它,但是什么也没发生。
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:541:11)
at ServerResponse.header (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:771:10)
at ServerResponse.send (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:170:12)
at done (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1008:10)
at tryHandleCache (/home/iiitk/Desktop/circuito Clone/node_modules/ejs/lib/ejs.js:260:5)
at View.exports.renderFile [as engine] (/home/iiitk/Desktop/circuito Clone/node_modules/ejs/lib/ejs.js:485:10)
at View.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/view.js:135:8)
at tryRender (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:640:10)
at Function.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1012:7)
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:541:11)
at ServerResponse.header (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:771:10)
at ServerResponse.send (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:170:12)
at done (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1008:10)
at tryHandleCache (/home/iiitk/Desktop/circuito Clone/node_modules/ejs/lib/ejs.js:260:5)
at View.exports.renderFile [as engine] (/home/iiitk/Desktop/circuito Clone/node_modules/ejs/lib/ejs.js:485:10)
at View.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/view.js:135:8)
at tryRender (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:640:10)
at Function.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1012:7)
[2020-06-07T08:02:57.908Z] @firebase/database: FIREBASE WARNING: Exception was thrown by user callback. TypeError: req.next is not a function
at done (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1007:25)
at tryRender (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:642:5)
at Function.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1012:7)
at /home/iiitk/Desktop/circuito Clone/src/index.js:174:28
at /home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:4550:22
at exceptionGuard (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:698:9)
at EventList.raise (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:9685:17)
at EventQueue.raiseQueuedEventsMatchingPredicate_ (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:9639:41)
at EventQueue.raiseEventsAtPath (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:9608:14)
/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:709
throw e;
^
TypeError: req.next is not a function
at done (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1007:25)
at tryRender (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:642:5)
at Function.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/iiitk/Desktop/circuito Clone/node_modules/express/lib/response.js:1012:7)
at /home/iiitk/Desktop/circuito Clone/src/index.js:174:28
at /home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:4550:22
at exceptionGuard (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:698:9)
at EventList.raise (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:9685:17)
at EventQueue.raiseQueuedEventsMatchingPredicate_ (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:9639:41)
at EventQueue.raiseEventsAtPath (/home/iiitk/Desktop/circuito Clone/node_modules/@firebase/database/dist/index.node.cjs.js:9608:14)
[nodemon] app crashed - waiting for file changes before starting...
我的代码
var alert = require('alert-node');
const path = require('path');
const express = require('express');
const ejs = require('ejs');
const bodyParser = require('body-parser');
const csrf = require('csurf');
const cookieParser = require("cookie-parser");
const port = process.env.PORT || 5000;
var parser = bodyParser.urlencoded({ extended: false });
const admin = require('firebase-admin');
const firebase = require('firebase');
const serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://circuitmaker-89730.firebaseio.com"
});
var firebaseConfig = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: "",
measurementId: ""
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE);
const publicDirPath = path.join(__dirname, '../public');
const csrfMiddleware = csrf({ cookie: true });
const app = express();
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'ejs');
app.use(express.static(publicDirPath));
app.use(bodyParser.json());
// process.on('unhandledRejection', (reason, p) => {
// console.log('Unhandled Rejection at: ', p, 'reason:', reason);
// // application specific logging, throwing an error, or other logic here
// });
app.get('/', function(req, res) {
res.render('signup');
})
app.post('/', parser, function(req, res) {
console.log(req.body);
name = req.body.username;
password = req.body.password;
email = req.body.login;
check_sign(email, password, function(result) {
if (result == true)
return res.redirect("/");
else
return res.redirect('/login');
})
})
app.get('/login', (req, res) => {
console.log("kunaldk");
return res.render('login')
})
app.post('/login', parser, (req, res) => {
email = req.body.login;
password = req.body.password;
login_check(email, password, function(result) {
if (result == true)
return res.redirect(307, "/main");
else
return res.status(204).send();
});
})
app.post('/profile', (req, res) => {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// console.log(user.uid)
var userid = firebase.auth().currentUser.uid;
console.log(userid);
firebase.database().ref(userid).on('value', (function(data, err) {
console.log(data.val().Email);
//p = data.val().Email;
return res.render('profile', { Data: data.val() });
}));
}
});
})
app.post('/main', (req, res) => {
var userid;
main_fn(res, req, function(result) {
console.log(result);
})
})
app.post('/logout', async function(req, res, next) {
firebase.auth().signOut();
return res.redirect('/')
// await firebase.auth().signOut().then((d) => {
// return res.redirect('/login');
// });
})
function login_check(email, password, callback) {
admin.auth().getUserByEmail(email).then(user => {
firebase.auth().signInWithEmailAndPassword(email, password).then(cred => {
console.log("cd");
callback(true);
}).catch(err => {
if (err.code == 'auth/wrong-password') {
alert("Email / password not Exist");
callback(false);
}
})
}).catch(err => {
if (err.code === 'auth/user-not-found') {
alert("Email / password not Exist");
callback(false);
}
})
}
function main_fn(res, req) {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
userid = firebase.auth().currentUser.uid;
console.log(userid);
firebase.database().ref(userid).on('value', (function(data, err) {
console.log(data.val().Email);
return res.render('index', { p: data.val().Username });
//res.render('index');
}));
}
});
}
function check_sign(email, password, callback) {
admin.auth().getUserByEmail(email).then(user => {
alert("Email Alredy exist");
callback(true);
}).catch(err => {
if (err.code === 'auth/wrong-password') {
console.log("signup");
firebase.auth().createUserWithEmailAndPassword(email, password).then(cred => {
firebase.database().ref(cred.user.uid).set({
Username: req.body.username,
Name: req.body.name,
Phone: req.body.phone,
Email: req.body.login,
Gender: req.body.gender
});
});
alert("Sign up Successfully");
callback(false);
}
})
}
app.listen(port, () => {
console.log(`Server is up and running on port ${port}`);