req.body 未定义,但主体解析器已初始化

req.body is undefined, but body-parser is initialized

我总是收到错误调用 req.body is undefined,但我在我的中间件中包含了 body-parser。 我像应该使用它一样使用它,至少我认为我这样做是因为我收到了警告

'body-parser' is deprecated

body-parser的初始化是否正确?为什么会出现该错误?

app.use(bodyParser.json())

编辑

我刚刚将 bodyParser 添加到我的路由中间件中,现在可以使用了。当 none 教程这样做时,有人可以解释为什么它只能那样工作吗?

无效:

app.use('/api/users', authRoute)

有效

app.use('/api/users', bodyParser.json(), authRoute)

编辑2

因为我在路由中间件下面定义了中间件,我不知道顺序很重要,也许不仅仅是我所以我离开这个编辑

所以问题是我在路由中间件下面定义了中间件,我不知道顺序很重要,也许不仅仅是我所以我把这个解决方案留给将来会遇到这个问题的人

这个答案对我很有帮助!谢谢。我犯了同样的错误,在我的路由下面定义了我的中间件,在 "^express version 4.17.1" 而不是 app.use(bodyParser.json()); 中也是一件事,我们也可以使用 app.use(express.json()); 并且它也可以正常工作,可能是这个版本express 内置了对 JSON.

的支持