#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
.