模拟器存储 运行 但被忽略
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()
函数时,我得到以下日志条目:
我需要:
- 获取存储仿真以解决此问题(理想)
- 弄清楚为什么在这种情况下无法下载
如果有人能帮助我,我将不胜感激。
我已经相应地更新了 firebase-admin 和 firebase-tools 包:
"dependencies": {
"firebase-admin": "^10.0.0",
"firebase-tools": "^9.23.1",
...
}
这导致了一个更明确的错误,指出下载的文件与服务器上的文件不匹配(我理解的哈希不匹配)。我知道不是这样,所以我把.download()
改成了.download({validation: false})
。这解决了我访问文件的问题。它仍然没有存储在本地仿真中,但也许这不是本意。
更新:我发现您必须更改存储桶才能在模拟存储中查看您的文件。
我有一个 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()
函数时,我得到以下日志条目:
我需要:
- 获取存储仿真以解决此问题(理想)
- 弄清楚为什么在这种情况下无法下载
如果有人能帮助我,我将不胜感激。
我已经相应地更新了 firebase-admin 和 firebase-tools 包:
"dependencies": {
"firebase-admin": "^10.0.0",
"firebase-tools": "^9.23.1",
...
}
这导致了一个更明确的错误,指出下载的文件与服务器上的文件不匹配(我理解的哈希不匹配)。我知道不是这样,所以我把.download()
改成了.download({validation: false})
。这解决了我访问文件的问题。它仍然没有存储在本地仿真中,但也许这不是本意。
更新:我发现您必须更改存储桶才能在模拟存储中查看您的文件。