我想将调制器导出到另一个文件,但是控制台向我返回错误。
TypeError: uploadImg.single is not a function
这是我的multer.js
module.export = () => {
const multer = require("multer");
const storage = multer.diskStorage({
destination(req, file, cb) {
const url = `./uploads/catalog`;
cb(null, url);
},
filename(req, file, cb) {
file.originalname = "re_" + file.originalname;
cb(null, `${file.originalname}`);
}
});
const uploadImg = multer({
storage: storage
});
return uploadImg;
};
这是我的路线文件的一部分
const uploadImg = require("./../services/multer");
app.post("/catalog/upload/img", uploadImg.single("image"), async (req, res, next) => {
console.log(req.file);
});
答案 0 :(得分:3)
您从以下内容开始:module.export = () => {...
,这意味着您将导出函数。
因此uploadImg
是函数const uploadImg = require("./../services/multer");
,唯一的调用方法是使用uploadImg()
。
如果其他所有内容都正确,那么uploadImg().single("image")
应该可以解决问题,但是将其导出为函数没有任何意义。如果您在静态上下文(使用哪些路由)中使用它,那么您可能想要这样的东西:
const multer = require("multer");
const storage = multer.diskStorage({
destination(req, file, cb) {
const url = `./uploads/catalog`;
cb(null, url);
},
filename(req, file, cb) {
file.originalname = "re_" + file.originalname;
cb(null, `${file.originalname}`);
}
});
const uploadImg = multer({
storage: storage
});
exports.uploadImg = uploadImg;
答案 1 :(得分:1)
您在multer.js中有错字
您应该写module.exports =
而不是module.export =