【问题标题】:Getting "Cannot GET /" on the front page with Express.js使用 Express.js 在首页获取“Cannot GET /”
【发布时间】:2022-07-31 17:59:48
【问题描述】:

我是 Node.js 的新手。在观看了许多解释性视频并阅读了 Node.js 文档之后,我开始在尊重 MVC 结构的同时开发该网站。节点服务器似乎可以工作,但前面的显示显示Cannot GET /。这是Browser ScreenshotMVC structure of the project

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}`);
});

home_controller.js 代码:

'use strict';

const homeView = (req, res) => {
    res.render("home_view", {
    } );
}
module.exports =  { homeView };

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;

home_view.ejs 只是 html。我不明白我的错误在哪里,代码对我来说似乎是正确的。提前感谢您的回答。

【问题讨论】:

    标签: javascript node.js express model-view-controller


    【解决方案1】:

    问题是您没有/ 的任何路由处理程序。你只处理/home。您对app.use('/', require('./routes/home_route')); 这一行的意思是,每次我在/ 上收到请求时,我都会将其传递给home_route.js 内的router,它只处理/home

    解决此问题的一种方法是将您在/ 上收到的请求重定向到已处理的/home。将home_route.js 更改为:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2019-04-25
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多