Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting body-Parser is deprecated Warning In Vs code and not Able to get Body tried to use inbuilt body-parser of express

enter image description here

Below Is Code Of app.js file

var port = process.env.PORT || 8080; // set our port
var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var cors = require('cors');
var indexRouter = require("./server/routes/index");
var http = require('http').Server(app);
const path = require('path')

const Licence = require('./server/CronJob/CronJob');

http.listen(port);

app.use(cors());

app.use(bodyParser.json({ limit: '50mb' }));

app.use(bodyParser.json({
    type: 'application/vnd.api+json'
}));

app.use(bodyParser.urlencoded({
    limit: '50mb',
    extended: true,
    parameterLimit: 50000
}));


// parse application/json
app.use(express.json());
app.use(express.urlencoded()); //Parse URL-encoded bodies


app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", '*');
    res.header("Access-Control-Allow-Credentials", true);
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header("Access-Control-Allow-Headers", 'Origin,X-Requested-With,Content-Type,Accept,content-type,application/json');
    res.header("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0");
    next();
});

app.use(express.static(path.join(__dirname, "/build")));

app.use(indexRouter);

app.get('/*', function (req, res) {
    res.sendFile(path.join(__dirname, '/build/index.html'), function (err) {
        if (err) {
            res.status(500).send(err)
        }
    })
})

// Licence.licenceExpire();

console.log('Magic happens on port ' + port); // shoutout to the user

exports = module.exports = app;

Version

express: ^4.17.1, body-parser: ^1.19.0

and also used suggestion given in below blog

update

I have used inbuilt body-parser but getting same error again here is the screenshot of function of inbuilt body-parser

enter image description here

like image 758
Aryan Avatar asked Mar 16 '21 16:03

Aryan


People also ask

What do you do if a body parser is deprecated?

To fix the 'BodyParser is deprecated' warning with Node. js and Express, we can replace bodyParser with express. urlencoded and express. json .

What does it mean body parser is deprecated?

Explanation: The default value of the extended option has been deprecated, meaning you need to explicitly pass true or false value. Note for Express 4.16. 0 and higher: body parser has been re-added to provide request body parsing support out-of-the-box.

Is body parser deprecated 2021?

body parser package is deprecated. If you are using latest version of express you don't have to install body-parser package.

Has body parser been deprecated?

'bodyParser' is deprecated.


2 Answers

From 4.16.0+ body-parser is inbuilt in express

Use http://expressjs.com/en/api.html#express.json

app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded())

https://expressjs.com/en/changelog/4x.html#4.16.0

The express.json() and express.urlencoded() middleware have been added to provide request body parsing support out-of-the-box. This uses the expressjs/body-parser module module underneath, so apps that are currently requiring the module separately can switch to the built-in parsers.

https://github.com/expressjs/body-parser/commit/b7420f8dc5c8b17a277c9e50d72bbaf3086a3900

This deprecates the generic bodyParser() middleware export that parses both json and urlencoded. The "all" middleware is very confusing, because it makes it sound like it parses all bodyes, though it does not do multipart, which is a common body type. Also, the arguments for the two different middleware are starting to overlap and it's hard to configure then when done this way.

like image 169
Tushar Gupta - curioustushar Avatar answered Oct 20 '22 17:10

Tushar Gupta - curioustushar


If you are using this code

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

then you can replace this code with

app.use(express.urlencoded());

and if you are using

app.use(bodyParser.json());

then replace with

app.use(express.json());
like image 24
Diwakar Tiwari Avatar answered Oct 20 '22 16:10

Diwakar Tiwari