I have the following setup in my app.js:
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
var router = express.Router();
require('./routes/index')(router);
app.use(router);
In my routes/index.js I have all the routes defined:
module.exports = function (router) {
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Home' });
});
router.post('/', function(req, res, next) {
console.log(req.body);
});
}
Then in my app entry point bin/server.js:
var app = require('../app');
var debug = require('debug')('NodeJSDemo:server');
var http = require('http');
var port = 3000;
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
When I make a POST call on http://localhost:3000/ with a request body, in the console log console log request body is undefined.
Is there anything wrong with my setup? From this post Express.js req.body undefined it seems as long as I call
app.use(bodyParser.json())
before loading routes, it should be fine but seems like it does not.