gpt4 book ai didi

typescript - Multer 处理错误, typescript 类型有问题

转载 作者:行者123 更新时间:2023-12-05 06:57:12 26 4
gpt4 key购买 nike

我有以下代码:

import multer from "multer";
const upload = multer().single('file');
router.post('/add', async (req, res) => {
upload(req, res, async (err: any) => {
if (err) {
res.status(500).send(err.toString())
}
else {
res.status(200).send(await addMedia(req.file.filename))
}
})
});

我正在尝试确定类型,所以我想用适当的错误类型替换 any。当我尝试用 MulterError 替换它时,出现以下错误:

Argument of type '(err: MulterError) => Promise' is not assignable to parameter of type 'NextFunction'. Types of parameters 'err' and 'deferToNext' are incompatible. Type 'string' is not assignable to type 'MulterError'.

由于 .toString()

unknown 不起作用。 string 确实有效,但它绝对不是正确的类型,因为记录它显示我有一个 MulterError

我也不完全理解 upload 函数的第三个参数是什么 - 所以这可能是我的问题。

最佳答案

这是我处理错误的方式

const storage: multer.StorageEngine = multer.diskStorage({
destination: (_req, _file, callback) => {
const path = `./uploads/`;
// creates folder if not exist
fs.mkdirSync(path, { recursive: true });
callback(null, path);
},
filename: (_req, file, callback) => {
callback(null, new Date().toISOString() + file.originalname);
}
});

const fileLimit = {
fileSize: 1024 * 1024 * 10 // limits the file size to 10MB
};
const fileFilter = (
_req: Request,
file: Express.Multer.File,
callback: FileFilterCallback
) => {
// return error if the file type is not image
if (!file || file.mimetype.split('/')[0] != 'image') {
return callback(new Error('Only images allowed'));
}
callback(null, true);
};

const upload: multer.Multer = multer({
storage: storage,
limits: fileLimit,
fileFilter: fileFilter
});

const galleryUpload = upload.single('galleryImage');
// Upload gallery image
router.post('/', async (req: Request, res: Response) => {
galleryUpload(req, res, (err: unknown) => {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
return res.status(400).send({ message: err.message });
} else if (err instanceof Error) {
// An unknown error occurred when uploading.
return res.status(400).send({ message: err.message });
}
return res.status(200).send({ message: 'Image uploaded successfully' });
});
});

关于typescript - Multer 处理错误, typescript 类型有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64946357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com