Halt
Halt

Reputation: 2994

TSLint marks body-parser as deprecated

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

Answers (2)

Abraham
Abraham

Reputation: 15750

Do not use body-parser anymore

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

Thanveer Shah
Thanveer Shah

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

Related Questions