Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

uisng multer with typescript: Property 'file' does not exist on type 'Request'.ts(2339)

I am using https://www.npmjs.com/package/multer library and my node.js app is written in typescript.

I get the following typescript error in my code.

Property 'file' does not exist on type 'Request'.ts(2339)

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

How can i resolve this. The req is the express Request object but multers middleware appends a .file into this request object. However it is not aware of this because the types request interface does not originally contain a file properly

like image 942
Kay Avatar asked Oct 15 '19 11:10

Kay


2 Answers

Probably we can just extend Request

interface MulterRequest extends Request {
    file: any;
}

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

or may be like this code

interface MulterRequest extends Request {
    file: any;
}

 public document = async (req: MulterRequest , res: Response): Promise<any> => {
   const documentFile  = req.file;
 }
like image 103
Yaroslav Gaponov Avatar answered Nov 11 '22 19:11

Yaroslav Gaponov


Or install @types/multer and check out this https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18569

like image 31
daliusd Avatar answered Nov 11 '22 21:11

daliusd