req.body 在使用 router.post() 时未定义,但在使用 app.post() 时可见

问题描述 投票:0回答:1

我有下一个

app.js

const express = require('express');
const bodyParser = require('body-parser');
const authRoutes = require('./routes/auth');
const app = express();

app.use(`$/api/auth`, authRoutes)

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))

module.exports = app;

routes/auth.js

const express = require("express");
const router = express.Router();

router.post("/register",  (req, res) =>{
    res.status(200).json(req.body);
})

所以,如果我尝试在 auth.js 中获取

req.body
,我会得到
undefined
,如果我传递任何 json 而不是 req.body,它将正常工作。

另外,如果我将

post
移动到
app.js
,它会看起来像这样:

const express = require('express');
    const bodyParser = require('body-parser');
    const authRoutes = require('./routes/auth');
    const app = express();
    
    // app.use(`$/api/auth`, authRoutes)
    
    app.use(bodyParser.json())
    app.use(bodyParser.urlencoded({extended: true}))

    app.post("/api/auth/register", (req, res) =>{
        res.status(200).json(req.body)
    })
     
    module.exports = app;

它也能正常工作。我没看到什么?

node.js express undefined req
1个回答
0
投票

Slebetman在评论中给出了答案。

因此,由于

app.use()
的内容是中间件,因此它们取决于它的处理顺序。因此我应该在路由中间件上方放置带有
bodyParser
的行。

© www.soinside.com 2019 - 2024. All rights reserved.