我的Express服务器具有以下代码:
import express from "express";
import helmet from "helmet";
import cors from "cors";
const app = express();
app.use(helmet());
app.use(cors());
app.use(express.json());
我在helmet()和express.json()调用中都收到了错误:
helmet():没有与此调用匹配的重载。最后的重载给出了以下错误。'(req: IncomingMessage,res: ServerResponse,next:(err?:unknown) => void) => void‘类型的参数不能赋值给'PathParams’类型的参数。类型‘(IncomingMessage| RegExp)[]':pop、push、concat、join和27 more.ts(2769)中缺少以下属性,类型'(req: IncomingMessage,res: ServerResponse,next:(err?:未知) => void) => void’缺少以下属性
express.json():没有与此调用匹配的重载。最后的重载给出了以下错误。'NextHandleFunction‘类型的参数不能赋值给'PathParams’类型的参数。类型'NextHandleFunction‘缺少类型'(string |RegExp)[]’的以下属性: pop、push、concat、join和27 more.ts(2769)
我使用的是Express4.17.1、TypeScript 4.3.5和Helmet 4.6.0。
我总是像这样使用helmet和express.json,但最近我开始看到这些打字错误。
有谁知道怎么解决这些问题吗?
谢谢。
发布于 2021-07-09 04:25:42
我也有同样的问题,你可以将它转换为正确的类型:
app.use(helmet() as express.RequestHandler);
或者,如果你不喜欢选角,你可以这样做
// from https://github.com/DefinitelyTyped/DefinitelyTyped/issues/43909
app.use((req, res, next) => { next(); }, cors()); // change cors() to what you want
https://stackoverflow.com/questions/68304842
复制相似问题