Почему fs (файловая система) удаляется в приложении cloud foundry, размещенном в IBM Cloud?

#node.js #rest #deployment #ibm-cloud #cloud-foundry

#node.js #остальное #развертывание #ibm-cloud #cloud-foundry

Вопрос:

Итак, я разместил свой серверный сервер (RESTful API) в качестве ресурса cloud foundry в IBM Cloud. Каталог серверной части выглядит примерно так

 controllers
models
middlewares
pdfs
public
routes
...
 

В моем коде я отправляю обратно PDF-файлы с помощью модуля nodejs fs, вот фрагмент кода,

   module.exports.viewDocument = async (req, res, next) => {
  const { docId } = req.params;
  const doc = await Docs.findById(docId);
  const file = fs.createReadStream(doc.path);
  const contentType = mime.contentType(path.extname(doc.name));
  res.setHeader("Content-Type", contentType);
  res.setHeader("Content-Disposition", `attachement; filename=${doc.name}`);
  file.pipe(res);
};
 

Код работает нормально в течение нескольких дней. Но затем приложение вылетает всякий раз, когда я пытаюсь загрузить любой PDF-файл (из внешнего интерфейса, который встроен в React). Журналы ошибок в IBM Cloud

 at lazyFs.open (internal/fs/streams.js:115:12)
Emitted 'error' event at:
Error: ENOENT: no such file or directory, open 'pdfs/Semester V/Applied Operating System/aos.pdf'
throw er; // Unhandled 'error' event
events.js:174
 

Почему это происходит? Папка pdf-файлов удаляется сверхурочно? Это очень странно, потому что загрузка PDF-файлов вначале работает отлично (может быть, в течение нескольких дней).

Комментарии:

1. Являются ли файлы частью того, что вы отправляете в приложение?

2. Да, это так. Если бы этого не было, они вообще не должны были работать. Но на самом деле они работают несколько дней, но затем через несколько дней он перестает работать и выдает сообщение об ошибке, в котором говорится, что папка не найдена.

3. восстанавливается ли серверная часть в конечном итоге после сбоя?

4. Единственное, что приходит на ум, чтобы описать поведение, которое вы видите, — это если вы записываете файлы в локальную файловую систему. Локальная файловая система эфемерна и ограничена жизненным циклом экземпляра приложения. Таким образом, если экземпляр приложения перезапускается по какой-либо причине, преднамеренной или непреднамеренной, у него будет новая файловая система. Если бы вы записывали файлы в локальную файловую систему, они бы исчезли. См . docs.cloudfoundry.org/devguide/deploy-apps /.

5. Вы можете проверить cf events , не происходит ли сбой или перезапуск вашего приложения по какой-либо причине примерно в то время, когда ваши файлы исчезают. Возможно, что ваше приложение также может быть перезапущено по какой-либо причине обслуживания серверной части, что может добавить или не добавить запись в cf events .