получение странной ошибки Error TypeError: app.use () требует функции промежуточного программного обеспечения - PullRequest
0 голосов
/ 04 августа 2020
const upload = require('../middleware/upload')
const user = require('../models/user')

class Routes {
    constructor(app) {
        this.configureCors(app)
        app.use(upload)
        app.use('/fileupload', (req, res) => {
            res.send("test")
        })
    }
    configureCors(app) {
        app.use((req, res, next) => {
            res.setHeader('Access-Control-Allow-Origin', '*');
            res.setHeader('Access-Control-Allow-Methods', 'POST, PUT, DELETE, GET');
            res.setHeader('Cache-Control', 'no-cache');
            next();
        });
    }    
}

module.exports = Routes

загрузить. js

const path = require('path')
const multer = require('multer')

const storage = multer.diskStorage({
    destination : function(req, file, cb) {
        cb(null, 'uploads/')
    },
    filename : function(req, file, cb) {
        let extn = path.extname(file.originalName)
        cb(null, Date.now() + extn)
    }
})

const Upload = multer({
    storage : storage,
    fileFilter : function(req, file, callback) {
        if(
            file.mimetype == 'image/png' ||
            file.mimetype == 'image/jpg'
          ) {
              callback(null, true)
          } else {
              console.log("Only support jpg and png images")
              callback(null, false)
          }
    },
    limit : {
        fileSize : 1024 * 1024 * 2
    }
})

module.exports = Upload

Я не знаю, где ошибка Error TypeError: app.use() requires a middleware function возможно видео. js ожидание возврата функции - это ошибка? Пожалуйста, взгляните и расскажите мне об этом.

Я хочу сделать его отдельным файлом для загрузки, настроив его через промежуточное ПО

Спасибо

1 Ответ

1 голос
/ 04 августа 2020

Вам необходимо использовать селекторы, предоставляемые multer, как указано в документах здесь .

Чтобы выбрать один файл для загрузки, измените свой код на:

    //...
    constructor(app) {
        this.configureCors(app)
        app.use(upload.single('file'))   // <= changed line of code
        app.use('/fileupload', (req, res) => {
            res.send("test")
        })
    }
    //...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...