Экспресс-загрузка файла с pm2 - PullRequest
0 голосов
/ 14 ноября 2018

Я создал приложение узла для загрузки изображения на сервер с некоторыми данными формы. это моя функция

var express = require('express');
var router = express.Router();
var app = express();
var fileUpload = require('express-fileupload');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var cors = require('cors')
var Job = require('../models/job');

exports.addJobs = function (req, res) {
if (req.files && req.body) {

let address = {
  'city': req.body.city,
  'street': req.body.street,
  'houseNumber': req.body.houseNumber
}

var job = new Job();
job.userId = req.body.userId;
job.categoryId = req.body.categoryId;
job.subCatId = req.body.subCatId;
job.description = req.body.description;
job.dueDate = req.body.dueDate;
job.dueTime = req.body.dueTime;
job.priceLimit = req.body.priceLimit;
job.longitude = req.body.longitude;
job.latitude = req.body.latitude;
job.address = address;

job.save(function (err) {
  if (err) {

    res.send(err);
  } else {

      if (!req.files) {
        return res.status(400).json({ message: 'No files were upload' });
      } else {

        let sampleFile = req.files.image;
        let type = req.files.image.mimetype.split('/')[1];

        let imgName = job._id;
        let filename = 'jobimages'
        let imgUrl = 'http://156.6*.***.***:8085/images/' + filename + '/' + imgName + '.' + type;
        let id = new mongoose.Types.ObjectId(imgName);

        Job.findById(id)
          .exec(function (err, result) {
            if (err) {

            } else {
              if (result !== null) {
                sampleFile.mv('./public/images/'+ filename + '/' + imgName + '.' + type, function (err) {
                  if (err) {
console.log('this is the error place')
                  } else {
                    var imagePath = {
                      $set: { imageUrl: imgUrl }
                    }

                      Job.findByIdAndUpdate(id, imagePath, function job(err, result) {
                        if (err) {

                        } else {

                          console.log('Image uploaded')
                        }
                      })

                  }
                });
              }
            }
          });
      }

    res.json({ message: 'success', details: "Added job successfully", content: job });
  }
});
 } else {
res.status(400).json({message: 'no image or body'})
}
};

когда я помещаю этот код на сервер и запускаю его с помощью команды 'node app.js', он добавляет данные в коллекцию заданий, а также успешно загружает изображение и обновляет imageUrl. но на том же сервере, когда я использую pm2, он только добавляет работу в коллекцию, но не может загрузить изображение. Я использовал 'pm2 monit', и он печатает мой console.log («это место ошибки») в приведенном выше коде, а также, когда я печатаю ошибку, которую он выдает,

Error: ENOENT: no such file or directory,open 
'./public/images/jobimages/5bec612c5f3da83c0f3.jpeg'
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: './public/images/jobimages/5bec612c5f/3da83c0f340c09.jpeg' }

Я не могу понять проблему, пожалуйста, помогите?

...