Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Node.js 为什么在IBMCloud上托管的CloudFoundry应用程序中删除fs(文件系统)?_Node.js_Rest_Deployment_Ibm Cloud_Cloud Foundry - Fatal编程技术网

Node.js 为什么在IBMCloud上托管的CloudFoundry应用程序中删除fs(文件系统)?

Node.js 为什么在IBMCloud上托管的CloudFoundry应用程序中删除fs(文件系统)?,node.js,rest,deployment,ibm-cloud,cloud-foundry,Node.js,Rest,Deployment,Ibm Cloud,Cloud Foundry,因此,我将我的后端(RESTfulAPI)作为IBMCloud中的云铸造资源托管。后端目录如下所示 controllers models middlewares pdfs public routes ... 在我的代码中,我使用nodejs fs模块发回PDF,下面是代码片段 module.exports.viewDocument = async (req, res, next) => { const { docId } = req.params; const doc = a

因此,我将我的后端(RESTfulAPI)作为IBMCloud中的云铸造资源托管。后端目录如下所示

controllers
models
middlewares
pdfs
public
routes
...
在我的代码中,我使用nodejs fs模块发回PDF,下面是代码片段

  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(从内置的前端应用程序)时,应用程序就会崩溃。IBMCloud中的错误日志为

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一开始就可以很好地工作(可能会持续几天)。

这些文件是应用程序推送的一部分吗?是的,它们是。如果没有,他们根本就不应该工作。但事实上,它们确实工作了几天,但几天后,它停止工作,并给出错误,说明未找到文件夹。一旦开始出现故障,后端是否最终恢复?唯一能描述您看到的行为的是,您是否正在将文件写入本地文件系统。本地文件系统是短暂的,其作用范围是应用程序实例的生命周期。因此,如果应用程序实例出于任何原因(有意或无意)重新启动,它将拥有一个新的文件系统。如果您正在将文件写入本地文件系统,那么它们就会消失。请参阅。您可以检查
cf events
,查看您的应用程序在文件消失前后是否因某种原因崩溃或重新启动。您的应用程序也可能因为某些后端维护原因而重新启动,这可能会或可能不会在
cf events
中添加条目。这些文件是您使用应用程序推送的内容的一部分吗?是的,它们是。如果没有,他们根本就不应该工作。但事实上,它们确实工作了几天,但几天后,它停止工作,并给出错误,说明未找到文件夹。一旦开始出现故障,后端是否最终恢复?唯一能描述您看到的行为的是,您是否正在将文件写入本地文件系统。本地文件系统是短暂的,其作用范围是应用程序实例的生命周期。因此,如果应用程序实例出于任何原因(有意或无意)重新启动,它将拥有一个新的文件系统。如果您正在将文件写入本地文件系统,那么它们就会消失。请参阅。您可以检查
cf events
,查看您的应用程序在文件消失前后是否因某种原因崩溃或重新启动。您的应用程序也可能因为某些后端维护原因而重新启动,这可能会或不会在
cf events
中添加条目。