【问题标题】:Emulator Storage running but ignored模拟器存储正在运行但被忽略
【发布时间】:2022-01-17 22:44:15
【问题描述】:

我有一个在模拟器中运行时成功上传文件的 firebase 函数,但即使我正在运行存储模拟器,该文件最终也会投入生产

我在函数目录中使用以下 package.json sn-ps 运行

"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 firebase-storage firebase-tools


    【解决方案1】:

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

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

    这导致了一个更清晰的错误,指出下载的文件与服务器上的文件不匹配(据我了解,哈希不匹配)。我知道情况并非如此,所以我将.download() 更改为.download({validation: false})。这解决了我访问文件的问题。它仍然没有存储在本地仿真中,但也许这不是目的。

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

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多