Я создал приложение узла для загрузки изображения на сервер с некоторыми данными формы.
это моя функция
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' }
Я не могу понять проблему, пожалуйста, помогите?