Файл назначения Multer не читается сервером ZEIT - PullRequest
1 голос
/ 03 июня 2019

Я получил следующую ошибку: no such as file or directory public/uploads/bae1774e-d6dc-454b-ba63-a4c8c53d3053.png во время загрузки изображения на сервер (nodejs) с помощью multer , размещенного на ZEIT

const multerMultiple = {
  storage: multer.diskStorage({
    destination: (req, file, callback) => {
      callback(null, "./public/uploads"); // I think the problem here
    },
    filename: (req, file, callback) => {
      const extension = file.mimetype.split("/")[1];
      const name = `${uuid.v4()}.${extension}`;
      callback(null, name);
    }
  })
};

Приведенная выше конфигурация работает идеально локально, в то время как узел js работает локально

now.json

{
  "name": "application-name",
  "version": 2,
  "builds": [
    { "src": "index.js", "use": "@now/node-server" },
    { "src": "./public/uploads", "use": "@now/static" }
  ],
  "routes": [{ "src": "/.*", "dest": "/index.js" }],
  "env": {
    .../ env here
  }
}

Исходный вид:

enter image description here

Что означает, что публичный каталог представлен

Так есть идеи, почему я получаю представленную проблему, пока узел js размещен? Что-то не хватает в конфигурации ZEIT сейчас или что-то связано с моим кодом?

1 Ответ

1 голос
/ 04 июня 2019

Похоже, вы пытаетесь загрузить файлы в свое приложение, работая на Zeit как лямбда.

Zeit работает поверх AWS Lambda. AWS Lambda и, следовательно, Now lambdas, предлагают только очень ограниченную запись в файловую систему во время выполнения, но любые изменения будут потеряны после завершения выполнения. Между лямбда-казнями нет долговечности.

Вместо этого вам нужно будет записать файлы в какое-то долговременное хранилище, например AWS S3. Вот пример того, как вы можете это сделать: https://github.com/zishon89us/node-cheat/tree/master/aws/express_multer_s3

...