模拟器存储 运行 但被忽略

Emulator Storage running but ignored

我有一个 firebase 函数,当 运行 在模拟器中时可以成功上传文件,但即使我 运行 使用存储模拟器

我是 运行 函数目录中的以下 package.json 片段

"dependencies": {
    "firebase-admin": "^8.13.0",
    "firebase-functions": "^3.16.0",
    ...
}
"engines": {
    "node": "14"
}

我正在使用默认值初始化所有内容(直到最近它在仿真和生产中都运行良好)。

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();
const storage = admin.storage();
const bucket = storage.bucket();

...

const myFunction = async () => {
    const savedFile = await bucket.file(`99999999.html`).save(fileContents);
}

上面的代码有效,尽管文件最终在生产环境中,而不是在模拟器存储中。日志显示正在访问生产 google api。

如果我还可以读取该文件,这会很好(不理想,但可行)。但是,当我尝试使用 bucket.file('99999999.html').download(); 为同一文件 运行 .exits().download() 函数时,我得到以下日志条目:

我需要:

  1. 获取存储仿真以解决此问题(理想)
  2. 弄清楚为什么在这种情况下无法下载

如果有人能帮助我,我将不胜感激。

我已经相应地更新了 firebase-admin 和 firebase-tools 包:

"dependencies": {
    "firebase-admin": "^10.0.0",
    "firebase-tools": "^9.23.1",
    ...
}

这导致了一个更明确的错误,指出下载的文件与服务器上的文件不匹配(我理解的哈希不匹配)。我知道不是这样,所以我把.download()改成了.download({validation: false})。这解决了我访问文件的问题。它仍然没有存储在本地仿真中,但也许这不是本意。

更新:我发现您必须更改存储桶才能在模拟存储中查看您的文件。