当前位置: 首页 > 知识库问答 >
问题:

尝试导出多个模块时出错。导出

咸正平
2023-03-14

我试图上传一个图像到内存使用multer,然后处理它与夏普和保存到磁盘。当我尝试在我的中间件中做多个module.exports时。

错误是:

TypeError FileUpload.Single不是函数

const multer = require("multer");
const sharp = require("sharp");


const MIME_TYPE_MAP = {
  "image/png": "png",
  "image/jpg": "jpg",
  "image/jpeg": "jpeg",
};

const multerStorage = multer.memoryStorage();

const multerFilter = (req, file, cb) => {
  const isValid = !!MIME_TYPE_MAP[file.mimetype];
  let error = isValid ? null : new Error("Invalid mime type");
  cb(error, isValid);
};

const fileUpload = multer({
  storage: multerStorage,
  fileFilter: multerFilter,
});

const resizeUserPhoto = (req, res, next) => {
  if (!req.file) return next();

  req.file.filename = `hero-${Date.now()}`;
  sharp(req.file.buffer)
    .resize(400, 400, {
      fit: sharp.fit.outside,
    })
    .toFormat("jpeg")
    .jpeg({ quality: 80 })
    .toFile(`uploads/images/${req.file.filename}`);

  next();
};

module.exports = { fileUpload: fileUpload, resizeUserPhoto: resizeUserPhoto };

到目前为止的路线是:

const express = require("express");
const userController = require("../controllers/userController");
const fileUpload = require("../middleware/file-upload");

router.post(
  "/update-avatar",
  fileUpload.single("image"),
  userController.updateAvatar
);

当我刚刚有下面的路由之前,尝试添加图像处理,我没有得到一个错误;

module.exports = fileUpload;

共有1个答案

苏鹏鹍
2023-03-14

看起来您正在导入整个 ,而不是只选择您需要的导出。

更新routes文件以解构 导出:

const express = require("express");
const userController = require("../controllers/userController");
const { fileUpload } = require("../middleware/file-upload"); // only grab the export you are using

router.post(
  "/update-avatar",
  fileUpload.single("image"),
  userController.updateAvatar
);
 类似资料:
  • 问题内容: 我尝试用Python学习TensorFlow。我的问题是导入TF模块。这是我的配置: Python 3.6.1 , Windows 7 (带有MSVCP140.dll) 我已经通过命令(在电源外壳中)安装了TensorFlow。有用。 但是当我运行python环境并尝试导入Tensor Flow时 我遇到错误,此错误引发了另一个与之相关的错误,但是一开始我想先解决此问题 追溯(最近一次

  • 我试图将一个目录中的几个csv文件读入pandas,并将它们连接到一个大数据帧中,但出现以下错误: 这是我的密码 我不知道为什么它不起作用。我试图用chmod解决这个问题,但一切都变了

  • 问题内容: react.js的新功能并尝试遵循本教程。不幸的是,页面中给出的代码无法正常工作。webpack抱怨 想知道如何解决它。谢谢。 === App.jsx ==== === main.js === 更新1 我注释掉了所有内容,并在末尾添加了以下内容 现在没有编译错误,但是网页为空白。我不确定这里出什么问题了。 问题答案: 您只能声明一个默认出口,例如: 要么 然后做 如果要导出更多内容,则

  • 我正在尝试创建一个导出多个ES6类的模块。假设我有以下目录结构: 和每个导出一个默认ES6类: 我目前有我的设置如下: 但是,我无法导入。我希望能够这样做,但找不到类: 在ES6模块中导出多个类的正确方法是什么?

  • 问题内容: 我正在尝试从集群模块调用函数,如下所示: 我收到以下错误: 在IPython中,制表符补全似乎可以访问基本,克隆,外部,re,setup_module,sys和警告模块。sklearn目录中没有其他(包括群集)。 遵循以下pbu的建议并使用 我得到: 我在Windows上使用Python 3.4,scikit-learn 0.16.1。 问题答案: 问题是scipy / numpy安装

  • 关于在ES6中使用导入导出,我得到以下错误: SyntaxError:导出声明只能出现在顶层 我上网找办法解决这个问题,但我做不到。谁能解释一下。我是ES6的新手,特别是导入和导出。(我使用StealJS完全是为了这种东西)谢谢! js文件有: 应用程序JS functions.js