我正在使用 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 附加到该请求对象中。然而它并没有意识到这一点,因为类型请求接口最初并不正确包含文件
也许我们可以延长请求
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;
}
或者安装@types/multer
npm i @types/multer --save-dev
并查看这个https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18569
就像@daliusd在他的回答中提到的那样,这里接受的答案应该是:
npm i @types/multer --save-dev
req.files
现在已被 Typescript 编译器键入并识别。
如果使用带有express-fileupload的typescript,你可以安装@types/express-fileupload作为开发依赖,它将得到解决
对我来说,我没有导入正确的
Request
、Response
对象。
添加正确的导入修复了它。
import { Request, Response, NextFunction } from 'express';