为什么 Express Js 即使在使用正文解析器后仍显示未定义的请求正文?

Why is Expess Js showing request body undefined even after using body parser?

即使在使用 body-parser 之后,我仍然遇到请求主体未定义的问题。我也在使用前缀路由。

 //adding router
const route = require('./routes/route')
app.use('/api',route)


//body-parser
app.use(bodyParser.json())

这就是问题。

TypeError: Cannot read property 'firstName' of undefined
    at E:\Projects\MEAN\routes\route.js:24:29
    at Layer.handle [as handle_request] (E:\Projects\MEAN\node_modules\express\lib\router\layer.js:95:5)
    at next (E:\Projects\MEAN\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (E:\Projects\MEAN\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (E:\Projects\MEAN\node_modules\express\lib\router\layer.js:95:5)
    at E:\Projects\MEAN\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (E:\Projects\MEAN\node_modules\express\lib\router\index.js:335:12)
    at next (E:\Projects\MEAN\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (E:\Projects\MEAN\node_modules\express\lib\router\index.js:174:3)
    at router (E:\Projects\MEAN\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (E:\Projects\MEAN\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (E:\Projects\MEAN\node_modules\express\lib\router\index.js:317:13)
    at E:\Projects\MEAN\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (E:\Projects\MEAN\node_modules\express\lib\router\index.js:335:12)
    at next (E:\Projects\MEAN\node_modules\express\lib\router\index.js:275:10)
    at expressInit (E:\Projects\MEAN\node_modules\express\lib\middleware\init.js:40:5)

问题是在我使用 body-parser 配置之上的路由器配置时引起的

像这样

//adding router
const route = require('./routes/route')
app.use('/api',route)


//body-parser
app.use(bodyParser.json())

但只需更改顺序即可解决我的问题。 像这样,

//body-parser
app.use(bodyParser.json())

//adding router
const route = require('./routes/route')
app.use('/api',route)