TSLint 抱怨 'Express bodyParser is deprecated'

TSLint complaining that 'Express bodyParser is deprecated'

如何消除警告bodyParser is deprecated. (deprecation)tslint(1)我真的不想禁用下一行,有没有更好的方法?

这是我的index.ts

import { app } from './app';
import * as dotenv from 'dotenv';
dotenv.config();

const hostname = process.env.HOST;
const port = process.env.PORT;

app.listen(port, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

这是app.ts

import express, { Application } from 'express';
import bodyParser from 'body-parser';
import { routes } from './routes';
export const app: Application = express();


app.use(bodyParser.json()); // bodyParser is deprecated. (deprecation)tslint(1)
routes(app);

您可以通过在 tslint.json 文件

中将 "deprecation" 键设置为 false 来禁用此 tslint 规则

示例 tslint.json 文件:

{
  "deprecation": false
}

但是请注意,这将禁用每一个弃用通知。如果您只想禁用下一行的弃用通知,您可以使用带有规则名称的注释标志。

// tslint:disable-next-line:deprecation
app.use(bodyParser.json());
routes(app);

我建议您使用 express 本身的内置正文解析器库,除非您有充分的理由使用自 2019 年以来已弃用的 body-parser

而不是:

app.use(bodyParser.json());

简单做

app.use(express.json());

另外在旁注中,tslint 也已弃用。现在,即使使用打字稿,您也应该使用 eslint :)

不要再使用 body-parser

如果您使用的是 Express 4.16+,正文解析功能已作为内置的 express 提供

您使用

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

从直接表达

因此您可以使用 npm uninstall body-parser 卸载 body-parser,然后使用 express 方法即可。