运行Firebase Storage规则单元测试时提示loadStorageRules不是函数
问题根因
你当前使用的@firebase/testing@0.20.11版本仅内置Firestore规则测试相关API,Storage规则测试的loadStorageRules()方法是后续版本才新增的能力,且官方后续已将该测试包重命名为@firebase/rules-unit-testing,旧包不再更新Storage相关功能。
解决步骤
- 第一步:卸载旧的测试依赖
执行命令:npm uninstall @firebase/testing - 第二步:安装支持Storage规则测试的新版依赖
执行命令:npm install --save-dev @firebase/rules-unit-testing@1.3.7
注意:如果使用JS v8 SDK,不要安装2.x及以上版本的规则测试包,2.x以上版本仅适配v9及更高版本的Firebase SDK - 第三步:调整代码导入逻辑
把原有导入@firebase/testing的语句替换为导入@firebase/rules-unit-testing,示例:// 原有导入(删除) // const firebase = require("@firebase/testing"); // 新版导入 const firebase = require("@firebase/rules-unit-testing"); - 第四步:验证API调用逻辑
确认loadStorageRules()调用时传入的参数符合要求,需要传入项目ID和规则文件的内容,示例写法:await firebase.loadStorageRules({ projectId: "your-test-project-id", rules: fs.readFileSync("path/to/storage.rules", "utf8") });
额外排查点
如果调整后仍有报错,可以检查两点:
- 确认项目内没有其他地方残留旧版本
@firebase/testing的依赖引用 - 确认
firebase-admin版本同步升级到至少^9.0.0,和新版规则测试包兼容
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

