Soy nuevo en Node.js. Después de ver muchos videos explicativos y leer los documentos de Node.js, comencé a desarrollar el sitio respetando una estructura MVC. El servidor de nodos parece funcionar, pero la pantalla en el frente muestra Cannot GET / . Aquí está la captura de pantalla del navegador y la estructura MVC del proyecto
código index.js:
'use strict'; /* eslint-env node, es6 */ const express = require('express'); const app = express(); app.set('view engine', 'ejs'); const PORT = process.env.PORT || 4242; app.use('/', require('./routes/home_route')); app.listen(PORT, () => { console.log(`serveur démaré: localhost:${PORT}`); });código home_controller.js:
'use strict'; const homeView = (req, res) => { res.render("home_view", { } ); } module.exports = { homeView };código home_route.js:
'use strict'; const express = require('express'); const { homeView } = require('../controllers/home_controller'); const router = express.Router(); router.get('/home', homeView); module.exports = router; Y home_view.ejs es solo html. No entiendo donde esta mi error, el codigo me parece correcto. Gracias de antemano por sus respuestas.
El problema es que no tiene ningún controlador de ruta para / . Solo está manejando /home . Lo que estás diciendo con esta línea app.use('/', require('./routes/home_route')); es que cada vez que recibo una solicitud en / , la paso a ese router dentro de home_route.js , que solo maneja /home .
Una forma de resolver esto es redirigir la solicitud que recibe en / to /home que ya se ha manejado. Para eso, cambie home_route.js a:
const express = require('express'); const { homeView } = require('../controllers/home_controller'); const router = express.Router(); router.get('/home', homeView); router.get('/', (req, res)=> res.redirect('/home')); // line I added module.exports = router;