nodejs expressjs ERR_TOO_MANY_REDIRECTS - PullRequest
       3

nodejs expressjs ERR_TOO_MANY_REDIRECTS

0 голосов
/ 11 декабря 2018

У меня ошибка с "ERR_TOO_MANY_REDIRECTS" в браузере.На Linux-сервере это выглядит так:

Error: Can't set headers after they are sent.

Это мой app.js:

const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const path = require('path');
const app = express();
const session = require('express-session');

const {getHomePage} = require('./routes/index');
const {getmain, addUserPage, addUser, deleteUser, editUser, editUserPage, addTemplates, getHistory} = require('./routes/user');
const port = 5000;

var auth = function(req, res, next) {
    if (req.session && req.session.user === "amy" && req.session.admin)
      return next();
    else
      return res.sendStatus(401);
  };

// create connection to database
// the mysql.createConnection function takes in a configuration object which contains host, user, password and the database name.
const db = mysql.createConnection ({
    host: 'localhost',
    user: '*****',
    password: '*****',
    database: '*****',
    charset : 'utf8mb4'
});

// connect to database
db.connect((err) => {
    if (err) {
        throw err;
    }
    console.log('Connected to database');
});
global.db = db;

// configure middleware
app.set('port', process.env.port || port); // set express to use this port
app.set('views', __dirname + '/views'); // set express to look in this folder to render our view
app.set('view engine', 'ejs'); // configure template engine
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // parse form data client
app.use(express.static(path.join(__dirname, 'public'))); // configure express to use public folder
app.locals.moment = require('moment');
app.use(session({
    secret: '2C44-4D44-WppQ38S',
    resave: true,
    saveUninitialized: true,
    cookie: { maxAge: 1800000}
}));
// routes for the app
app.get('/', getHomePage);
app.get('/main', auth, getmain);
app.get('/add', auth, addUserPage);
app.get('/edit/:id', auth, editUserPage);
app.get('/delete/:id', auth, deleteUser);
app.get('/addtemp/:login', auth, addTemplates);
app.get('/history', auth, getHistory)
app.post('/add', auth, addUser);
app.post('/edit/:id', auth, editUser);
app.post('/addtemp/:login', auth, addTemplates);

// Login endpoint
app.get('/login', function (req, res) {
    if (!req.query.username || !req.query.password) {
      res.send('login failed');    
    } else if(req.query.username === "amy" || req.query.password === "amy") {
      req.session.user = "amy";
      req.session.admin = true;
      res.redirect('/main');
    }
  });

  // Logout endpoint
  app.get('/logout', function (req, res) {
    req.session.destroy();
    res.redirect("/");

  });

// set the app to listen on the port
app.listen(port, () => {
    console.log(`Server running on port: ${port}`);
});

Я знаю, у меня есть некоторые проблемы в

app.get('login...

Theres всеОК, если успешно войти в систему, используя правильное имя пользователя и пароль, но когда я использую неправильное, ничего не происходит.

Это мой модуль getmain (после правильного входа в систему):

getmain: (req, res) => {
        let query = "SELECT * FROM `users` ORDER BY id ASC"; 

        // execute query
        db.query(query, (err, result) => {
            if (err) {
                res.redirect('/main');
            }
            res.render('main.ejs', {
                title: "blablabla"
                ,users: result
            });
        });
    },

И это index.js:

module.exports = {
    getHomePage: (req, res) => {
        let query = "SELECT * FROM `users` ORDER BY id ASC"; 

        // execute query
        db.query(query, (err, result) => {
            if (err) {
                res.redirect('/');
            }
            res.render('index.ejs', {
                title: "blablabla"
                ,users: result
            });
        });
    },
};

Я прочитал это все, потому что зацикливаясь, но я не могу понять это.Я буду благодарен за то, что направил меня к источнику проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...