Multer mulsters3 и body-parser выдают ошибку типа - PullRequest
0 голосов
/ 07 апреля 2019

Я создал form, который позволяет зарегистрированным пользователям загружать информацию о событиях в мое веб-приложение.Текст из формы превращается в объект JSON, а оттуда изменяется в существующий файл JSON и загружается в Amazon-S3.Кроме того, пользователь может загрузить изображение с событием, которое загружается отдельно в S3 в подпапке / imgs (в том же контейнере), а затем ссылка помещается в объект JSON позже после завершения загрузки изображения (с учетомпомните, что и изображение, и загрузка в формате json являются асинхронными, и первое будет происходить быстрее, чем второе). index.js

app.post('/newEV*', isLoggedIn, myDB.upload.single('image'), function(req, res) {
  var myURL = req.path.replace('/newEV', '');

  fetch(myURL).then(function (events){
    var myID;
    var x = 0;
    while(!myID) {
      if(!events[x]) {
        myID = x;
      } else {
        x++;
      }
    }
    myDB.newEvent(myURL, req.body.name, req.body.desc, req.body.loc, req.file.filename, req.body.link, req.body.cap, req.body.date, req.body.time, myID, events);
    res.redirect('/edit' + myURL);
  });

});

isLoggedIn - это промежуточное ПО для проверки подлинности пользователя и, как видно ниже myDB.upload.array должно загрузить изображение изформа на с3. myDB

module.exports = {

    upload : multer({
        storage: mulsters3({
          s3: new aws.S3(),
          bucket: S3_BUCKET,
          key: function(req, file, cb) {
              console.log(file);
              cb(null, "imgs/" + file.originalname);
          }
        })
    }),
newEvent : function(cata, name, desc, loc, pic, link, cap, date, time, id, events) {
        var newEventObj = {
            "id": id,
            "name": name,
            "desc": desc.replace('/\r?\n|\r/', '<br/>'),
            "location": loc,
            "picture": pic,
            "link": link,
            "cap": cap,
            "date": date,
            "time": time
        }

        var myJson;
        switch (cata) {

            case "Pr":
                myJson = 'primaryEvents.json';
                break;

            case "Sc":
                myJson = 'secondaryEvents.json';
                break;

            case "Po":
                myJson = 'postEvents.json';
                break;
        }

        events[id] = newEventObj; // Add new event to JSON object
        signs3(JSON.stringify(events), myJson);

    }
}

В настоящее время, когда код выполняется, я получаю эту ошибку:

(node:21049) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'filename' of undefined
    at /home/tommy/Documents/cWeek044/index.js:292:79
    at process._tickCallback (internal/process/next_tick.js:68:7)

Как происходит эта ошибка?Большое спасибо

...