我想导出模块multer到另一个文件,但控制台返回一个错误给我。
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);
});发布于 2019-03-20 21:13:16
你在multer.js中有一个拼写错误
您应该编写module.exports =而不是module.export =
发布于 2019-03-20 21:13:08
您可以从这个开始: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;那么你可以像下面这样调用它
const myMulter = require("./../services/multer");
app.post("/catalog/upload/img", myMulter.uploadImg.single("image"), async (req, res, next) => {
console.log(req.file);
});https://stackoverflow.com/questions/55261520
复制相似问题