You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express MVC模式下POST路由报错Cannot POST /validateUser求助

Express MVC登录功能POST请求路由失效排查

问题说明

使用Express框架的MVC架构开发登录功能时,提交包含username和password的POST表单至/validateUser路径,出现「Cannot POST /validateUser」错误。直接在app.use中编写处理函数可正常获取表单数据,但通过引入validationRoute路由文件的方式无法生效,请求无法到达控制器,需排查问题。

代码片段

登录表单代码

<!DOCTYPE html>
<html>
  <head>
    <title>Login Form</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    
  </head>
  <body>
    <div class="contentDiv">
        <form action="/validateUser" method="post">
        <!-- user input-->
        Username:<br>
        <input type="text" name="username" placeholder="Username" required><br><br>
        Password:<br>
        <input type="password" name="password" placeholder="Password" required><br><br>
        
        <input type="submit" value="login">
        </form>
    </div>
  </body>
</html>  

app.js代码

const express = require('express'),
app = express(),

app.set('view engine', 'ejs')

/*For getting form input*/
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));

const validationRoute = require('./routes/validationRoute')

/* Routes */
//app.post('/validateUser', validationRoute)
app.use('/validateUser', validationRoute)

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
    console.log(`Listening on Port: ${PORT}`);
})

validationRoute.js代码

const express = require('express'),
router = express.Router(),
validationCon = require('../controllers/validationController')

router.get('/', validationCon.validateUser);

/*
router.get('/', (req, res) => {
    console.log("URL from validate: "+req.url)
}) */

module.exports = router;

validationController.js代码

const { logic } = require("../dbLogic");

module.exports = {

    validateUser: async (req, res) => {
        const uName = req.uName, 
            pwd = req.pwd;
        const success = true//await logic.validateUser(uName, pwd);

        if(success) {
            //res.status(201).send('Login accepted');
            res.render('../views/pages/secret');
        }
        else
            res.status(400).send("Bad confidentials");
    }
}

补充信息

直接使用app.use('/validateUser', function(req,res){...})可以正常获取username和password,但通过路由文件的方式无法生效,希望实现通过路由传递到控制器进行验证的MVC模式。


内容的提问来源于stack exchange,提问作者user1960836

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:35:14