typescript 使用打印机和打印脚本:类型'Request'上没有属性'file'. ts(2339)

stszievb  于 2022-11-18  发布在  TypeScript
关注(0)|答案(3)|浏览(158)

我正在使用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请求对象,但是multers中间件将一个.file附加到这个请求对象中。但是它并不知道这一点,因为types请求接口最初并没有正确地包含一个文件

qnakjoqk

qnakjoqk1#

也许我们可以把请求

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;
 }
jchrr9hc

jchrr9hc3#

就像@daliusd在他的回答中提到的,这里公认的答案应该是:
npm i @types/multer --save-dev
req.files现在已具类型,并可由Typescript编译器辨识。

相关问题