Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Multer正在尝试创建一个新文件夹,但该文件夹已存在_Javascript_Express_Heroku_Multer - Fatal编程技术网

Javascript Multer正在尝试创建一个新文件夹,但该文件夹已存在

Javascript Multer正在尝试创建一个新文件夹,但该文件夹已存在,javascript,express,heroku,multer,Javascript,Express,Heroku,Multer,我使用Multer管理图像上传,当我在本地机器上运行我的应用程序时,一切都很好。但现在我正试图部署到Heroku,我的应用程序日志中出现了以下错误: 未处理的拒绝错误:EROFS:只读文件系统,mkdir “/公众” …这似乎是在尝试创建一个目录,而不是使用现有的目录(就像在我的本地计算机上一样) 这是我为Multer使用的代码: var storage = multer.diskStorage({ destination: (req, file, cb) => { cb(

我使用Multer管理图像上传,当我在本地机器上运行我的应用程序时,一切都很好。但现在我正试图部署到Heroku,我的应用程序日志中出现了以下错误:

未处理的拒绝错误:EROFS:只读文件系统,mkdir “/公众”

…这似乎是在尝试创建一个目录,而不是使用现有的目录(就像在我的本地计算机上一样)

这是我为Multer使用的代码:

var storage = multer.diskStorage({
  destination: (req, file, cb) => {
      cb(null, 'public/img/')   },
  filename: (req, file, cb) => {
    cb(null, new Date().toISOString() + file.originalname)
} })

var upload = multer({storage: storage})


router.post('/:propertyid', upload.single('img'), function(req, res) {
  Property.update({
      img: req.file.filename
    }, {
    where: {
      id: req.params.propertyid,
   }
  }).then(updatedProperty => {
        res.redirect('/admin/' + updatedProperty)
  })
});

public/img目录已经存在,在测试它时,它使用正确的文件名运行良好,并且最终位于正确的位置。感谢您的帮助!谢谢

Heroku dynos有一个短暂的文件系统。乃缦纽伯德的回答很好地解释了这意味着什么

TL;博士:
Dynos的文件系统不应用于存储除部署内容之外的任何永久存储或数据。为了使用存储,.

您可以使用
fs extra
来创建文件夹,它将同步并创建如下所示的文件夹。下面的代码中我正在通过
user\u id创建目录
并上载多个图像,因此我在代码中使用了
fs.mkdirsSync(path)

let fs = require('fs-extra');

let storage = multer.diskStorage({
destination: function (req, file, cb) {
    let Id = req.body.id;
    let path = `tmp/daily_gasoline_report/${Id}`;
    fs.mkdirsSync(path);
    cb(null, path);
},
filename: function (req, file, cb) {
    // console.log(file);

    let extArray = file.mimetype.split("/");
    let extension = extArray[extArray.length - 1];
    cb(null, file.fieldname + '-' + Date.now() + "." + extension);
}
})