Heroku上にデプロイした、Node.js Expressのmulterを使用したファイルアップロードで、エラーが出てアップロードできなかった話を共有します。
Logs
[Error: ENOENT: no such file or directory, open '/app/uploads/{filename}.jpg'] {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/app/uploads/{filename}.jpg',
storageErrors: []
}
Source
uploader.js
'use strict'
const express = require('express');
const router = express.Router();
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads/')
},
filename: function (req, file, cb) {
cb(null, filename)
}
})
const upload = multer({ storage: storage })
router.post('/', upload.single('file'), function (req, res, next) {
…
(略)
…
});
module.exports = router;
対処法
Herokuでは /tmp/ 以下にしかファイルを保存できないらしい。