最近在做一个涉及到图片上传的项目,于是用了multer在node项目做图片接收。
将图片保存到static静态目录下。multer代码如下//使用磁盘存储文件,指定存储位置和文件名
let storage = multer.diskStorage({
//存储目录
destination: function(req, file, cb) {
cb(null, path.join(__dirname, "../static/static/picture"));
},
//文件名
filename: function(req, file, cb) {
fileName = req.session.phoneNumber +Date.now() + file.originalname.match(/(\.(jpe?g|png|gif|webp))$/)[0];
cb(null, fileName);
}
});
//规定上传的一些参数
let upload = multer({
storage: storage, //规定存储方式
limits: {
fieldSize: {
//规定上传的各种限制
fileSize: 1024*1024*3 //限制大小不超过3M
},
fileFilter(req,file,cb){
//文件过滤
cb(null,true);
}
}
}).single("file");
PM2的配置如下
{
"apps": {
"name": "pm2-server",
"script": "./bin/www",
"watch": true,
"ignore_watch": [
"logs",
"node_modules"
],
"instances": 1,
"error_file": "logs/err.log",
"out_file": "logs/out.log",
"log_data_format": "YYY-MM-DD HH:mm:ss"
}
}
造成的异常就是上传图片时,PM2进程莫名其妙的自动重启,并且没有异常重启报告。
后看了pm2配置介绍后,才意识到其中"ignore_watch"的重要性。异常的原因在于,我上传图片存储到static目录下,而PM2检查到staic中的内容改变,进程就自动重启了。所以应在ignore_watch中添加会正常改变的文件夹。异常解决