首页 > 解决方案 > 在 Google Cloud Functions 中写入文件后找不到文件

问题描述

当我写入 os.tmpdir 时,我可以在查看目录时看到该文件,但在随后调用同一函数时,我什么也看不到。我认为这意味着文件以某种方式不再存在(不太可能),或者我正在寻找不同的地方。我知道我应该在使用它们之后删除 tmp 目录中的文件,但在此之前我希望能够再次找到这些文件,以确保任何删除方法在以后都可以正常工作。

下面是我用来编写文件的代码。

var wstream = fs.createWriteStream(os.tmpdir() + '/myOutput.txt');


wstream.write('Hello world!\n');
wstream.write('Another line\n');

wstream.end();      

wstream.on('finish', function () {
        console.log('file has been written');
        fs.readdir(os.tmpdir(), (err, files) => {
            console.log(files.length);
            files.forEach(file => {
                        console.log("Hey Again3", file);
                });
            })

标签: node.jsgoogle-cloud-functions

解决方案


Cloud Functions 会根据需要启动环境以满足应用程序的负载,并在不再需要时将其关闭。本地存储特定于每个容器,并且不在容器之间共享。

这意味着无法保证您写入本地存储的任何文件在后续调用 Cloud Functions 时可用。因此,您应该只使用本地存储:

  • 对于单个调用中的临时文件,在这种情况下,您应该在函数退出时清理它们。
  • 用于缓存可以重新创建但价格昂贵的文件。例如,您从数据库加载的内容。

推荐阅读