如何导出multer模块

时间:2019-03-20 13:09:15

标签: javascript node.js

我想将调制器导出到另一个文件,但是控制台向我返回错误。

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);
});

2 个答案:

答案 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 =