1
我有一個快速應用程序,我正在使用Sharp在用戶上傳後調整圖像大小。當我使用'npm start'啓動應用程序時,我可以毫無問題地上傳圖像,但如果我使用PM2來管理該過程,則圖像不會保存在服務器上。我可以保存它們而不使用夏普來調整它們的大小,只有當我的代碼爲銳利時才能保存。以下是我的控制器的代碼。 Multer正在處理這個表格,並且正在調整圖片的大小。與PM2一起運行應用程序時,Sharp image uploader無法正常工作
doNewRecipe: function(req, res) {
for (var key in req.body) {
req.body[key] = req.body[key] || undefined;
}
var body = _.pick(req.body, 'title', 'description', 'ingredients', 'instructions', 'yield', 'prep_time', 'cook_time', 'categoryId');
body.userId = req.session.user.id;
if (req.file) {
var tempPath = req.file.path,
ext = path.extname(req.file.originalname).toLowerCase(),
//targetPath = path.resolve(finalUploadPath + req.file.filename + ext);
targetPath = path.resolve(finalUploadPath);
fs.renameSync(tempPath, tempPath + ext);
var newFileName = req.file.filename + ext;
var imageFile = tempPath + ext;
body.image = newFileName;
sharp(imageFile)
.resize(450, 450)
.max()
.toFile('./public/finalUpload/' + newFileName, function(err, info) {
body.image = newFileName;
fs.unlinkSync(path.resolve(tempPath + ext));
db.recipe.create(body).then(function(recipe) {
res.redirect('/recipe/view/' + recipe.id);
}, function(e) {
console.log(e.message);
res.render('error', {message: e.toString()});
});
});
//fs.renameSync(tempPath, targetPath);
} else {
db.recipe.create(body).then(function(recipe) {
res.redirect('/recipe/view/' + recipe.id);
}, function(e) {
console.log(e.message);
res.render('error', {message: e.toString()});
});
}
},
您是否使用ecos.json配置文件來啓動您的應用程序與PM2?您可以添加CWD參數。 – Zauker
我剛剛使用'pm2 start bin/www'來啓動應用程序。 –
這是不一樣的執行 pm2開始/my/path/app.js 然後 cd/my/path; pm2 start app.js 你可以用你的應用程序的開始選項生成一個json文件,並添加'cwd'(工作目錄的路徑) – Zauker