使用 typescript 的 multer:“Request”类型上不存在属性“file”。ts(2339)

问题描述 投票:0回答:5

我正在使用 https://www.npmjs.com/package/multer 库,我的 node.js 应用程序是用 typescript 编写的。

我的代码中出现以下打字稿错误。

“Request”类型上不存在属性“file”。ts(2339)

    public document = async (req: Request, res: Response): Promise<any> => {
        const documentFile = req.file;
    }

我该如何解决这个问题。 req 是 Express Request 对象,但 multers 中间件将 .file 附加到该请求对象中。然而它并没有意识到这一点,因为类型请求接口最初并不正确包含文件

node.js typescript multer
5个回答
22
投票

也许我们可以延长请求

interface MulterRequest extends Request {
    file: any;
}

 public document = async (req: Request, res: Response): Promise<any> => {
   const documentFile  = (req as MulterRequest).file;
 }

或者可能像这样的代码

interface MulterRequest extends Request {
    file: any;
}

 public document = async (req: MulterRequest , res: Response): Promise<any> => {
   const documentFile  = req.file;
 }

17
投票

或者安装@types/multer

npm i @types/multer --save-dev

并查看这个https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18569


3
投票

就像@daliusd在他的回答中提到的那样,这里接受的答案应该是:

npm i @types/multer --save-dev

req.files
现在已被 Typescript 编译器键入并识别。


1
投票

如果使用带有express-fileupload的typescript,你可以安装@types/express-fileupload作为开发依赖,它将得到解决


0
投票

对我来说,我没有导入正确的

Request
Response
对象。

添加正确的导入修复了它。

import { Request, Response, NextFunction } from 'express';
© www.soinside.com 2019 - 2024. All rights reserved.