【问题标题】:"Rules content empty" error in firestore using emulator, when changing firestore.rules更改 firestore.rules 时,使用模拟器的 Firestore 中出现“规则内容为空”错误
【发布时间】:2020-03-29 14:56:01
【问题描述】:

错误:在 firestore.rules 发生任何变化时,Firestore 模拟器输出:

i  firestore: Change detected, updating rules...
**⚠  firestore.rules:0:0 - ERROR Rules content empty. Compilation aborted.**
✔  firestore: Rules updated.

尝试过的平台: WSL 以及 virtualbox 下的 Ubuntu VM

代码实验室: https://google.dev/codelabs/firebase-emulator-test-rules

当前 firestore.rules:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /carts/{cartID} {
      allow create: if request.auth.uid == request.resource.data.ownerUID;
      allow read, update, delete: if request.auth.uid == resource.data.ownerUID;
    }
    match /carts/{cartID}/items/{itemID} {
      allow read, write: if get(/databases/$(database)/documents/carts/$(cartID)).data.ownerUID == request.auth.uid;
    }
    match /items/{itemID} {
      allow read; // Users can read items
      // In a production app, don't allow unconditional write access!
      allow create; // For the codelab, client app uses this to add seed data.
    }
  }
}

Firebase 控制台上的项目配置: 仅对默认项目进行了两项修改,启用匿名身份验证(每个 codelab),并在生产模式下添加 firestore。

...我已经用谷歌搜索了这个 “firestore.rules:0:0 - 错误规则内容为空。编译中止。” 错误,但什么也没出现。其他人看到了吗?

【问题讨论】:

  • 出于好奇,您是否尝试过从一开始就删除rules_version = '2';?我的理论是模拟器无法识别该指令是一个错误。

标签: firebase google-cloud-firestore firebase-security


【解决方案1】:

该错误向我表明您的代码正在尝试加载一个空文件。检查您的配置是否指向正确的文件,并确保在文本编辑器中保存文件以确保它包含您期望的内容。

【讨论】:

  • 这可能是一个以行结尾的 crlf 问题吗?...我想当我在 Ubuntu VM 上运行它并遇到同样的错误时,我正在运行从 WSL 提交的代码。我想我可以从代码实验室的干净结帐中尝试。
  • OK... 有趣/诡异:使用 vim 编辑 firestore.rules 不会产生错误,但使用 VS Code 编辑会产生错误。是否有可能一个人正在就地编辑,而一个人正在执行某种删除/替换,从而文件在中间阶段为空?
  • 如果您安装建议的 WSL VSCode 插件,WSL / VSCode 中的问题就会消失。
【解决方案2】:

我的经验是,这是模拟器中的一个错误。在一次又一次地测试规则更改(或单元测试更改)时,我有时会收到此错误。如果我这样做了,所有未来的规则更改似乎都会被忽略。很奇怪。

遗憾的是,我目前的解决方法是停止并重新启动模拟器。然后事情将开始按预期工作。

如果有人有不同的解决方案,我很想听听!

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2021-07-23
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多