Reputation: 2994
I have the Typescript code below:
import * as express from 'express';
import * as bodyParser from 'body-parser';
...
const app: express.Application = express();
app.use(bodyParser.json());
In VSCode the bodyParser on the last line is marked with yellow squiggles saying that body-parser is deprecated.
In the .d.ts file I see the following:
/** @deprecated */
declare function bodyParser(
options?: bodyParser.OptionsJson & bodyParser.OptionsText & bodyParser.OptionsUrlencoded,
): NextHandleFunction;
declare namespace bodyParser {
...
function json(options?: OptionsJson): NextHandleFunction;
Why is the linter complaining about the body-parser function while I do not use it as a function in my code? Am I missing something in a tsconfig.json file to prevent this? Compiling doesn't seem to be a problem.
Upvotes: 24
Views: 12129
Reputation: 15750
Since Express 4.16+ the body parsing functionality has become builtin with express
So, you can simply do
app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads
using express directly, without having to install body-parser.
uninstall body-parser using npm uninstall body-parser
Then you can access the POST data, using req.body
app.post("/yourpath", (req, res)=>{
var postData = req.body;
//Or if body comes as string,
var postData = JSON.parse(req.body);
});
Upvotes: 8
Reputation: 3333
BodyParse is built into Express js
So now you don't have to install body-parser, do this instead.
app.use(express.json());
Upvotes: 64