I’m trying to create a web app with the MVC pattern and express in node.js. This is my project structure: project structure image
app.js:
JavaScript
x
14
14
1
let express = require("express");
2
let hbs = require("hbs");
3
let app = express();
4
5
let indexController = require("./controllers/indexController");
6
let loginController = require("./controllers/loginController");
7
8
app.set("view engine", "hbs");
9
10
app.use('/login', loginController);
11
app.use('/', indexController);
12
13
app.listen(3000);
14
loginController.js:
JavaScript
1
9
1
let express = require("express");
2
let router = express.Router();
3
4
router.get('/login', (req, res) => {
5
res.render("login");
6
});
7
8
module.exports = router;
9
The problem is that I can access the index page (“/”) but not the login page (“/login”) even when the code for both is almost identical.
Here’s the code of indexController.js:
JavaScript
1
9
1
let express = require("express");
2
let router = express.Router();
3
4
router.get('/', (req, res) => {
5
res.render("index");
6
});
7
8
module.exports = router;
9
I don’t really know what’s happening, I’m kinda new to express and MVC and couldn’t find anything online, please help 🙂
Advertisement
Answer
You have ‘login’ twice. The first one is enough in app.use('/login', loginController);
Inside, you can remove the other
JavaScript
1
4
1
router.get('/', (req, res) => {
2
res.render("login");
3
});
4