TSLint 将主体解析器标记为已弃用

TSLint marks body-parser as deprecated

我有下面的 Typescript 代码:

import * as express from 'express';
import * as bodyParser from 'body-parser';

...
const app: express.Application = express();

app.use(bodyParser.json());

在 VSCode 中,最后一行的 bodyParser 标有黄色波浪线,表明 body-parser 已弃用。

在 .d.ts 文件中,我看到以下内容:

/** @deprecated */
declare function bodyParser(
    options?: bodyParser.OptionsJson & bodyParser.OptionsText & bodyParser.OptionsUrlencoded,
): NextHandleFunction;

declare namespace bodyParser {
...
    function json(options?: OptionsJson): NextHandleFunction;

为什么 linter 抱怨 body-parser 函数,而我没有在我的代码中将它用作函数?我是否在 tsconfig.json 文件中遗漏了一些东西来防止这种情况发生?编译好像没问题

BodyParse 内置于 Express js 中

所以现在您不必安装 body-parser,而是安装它。

app.use(express.json());

不要再使用 body-parser

从 Express 4.16+ 开始,正文解析功能已成为 builtin with express

所以,你可以简单地做

app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads

直接使用 express,无需安装 body-parser。

使用 npm uninstall body-parser

卸载 body-parser



然后你可以访问POST数据,使用req.body

app.post("/yourpath", (req, res)=>{

    var postData = req.body;

    //Or if body comes as string,

    var postData = JSON.parse(req.body);
});