Импорт экспресс-маршрутов приводит к тому, что тело запроса не определено

#node.js #express #httprequest #body-parser

Вопрос:

Я использую express для создания приложения mongodb auth0.

Мои просьбы сохраняют свое тело, когда их помещают в index.js, но как только я перехожу в другой файл js в проекте, он возвращает неопределенный, где сохраняются заголовки и другие атрибуты req.

index.js

 const express = require('express') const app = express(); const port = 8000;  var loginRoutes = require('./routes/login');  app.use(express.json());  const clientPromise = require('./mongodb-client');  app.use('/login', loginRoutes);  

/routes/login.js

 const express = require('express') router = express.Router();  const clientPromise = require('../mongodb-client');  const auth0 = require('../auth0-client');  const app = express(); app.use(express.json());  const {ObjectId} = require("mongodb");  //LOGIN USER router.post('/', async function(req, res) {  console.log(JSON.stringify(req.body));   var data = {  username: req.body.username,  password: req.body.password  };   auth0.passwordGrant(data, function (err, userData) {  if (err) {  // Handle error.  }    console.log(userData);  });   res.send({'login': 'yes'}) })  module.exports = router;  

Я предполагаю, что это как-то связано с express.json() и, возможно, с какой-то проблемой OOO? Но я использую поисковые системы и не могу понять, что нужно устранять дальше.

Ответ №1:

app.use(express.json()); должно произойти раньше var loginRoutes = require('./routes/login'); , чтобы тело запроса было проанализировано и успешно передано на дочерний маршрут входа.