Firebase &引用;“规则内容为空”;更改firestore.rules时,使用emulator在firestore中出错

Firebase &引用;“规则内容为空”;更改firestore.rules时,使用emulator在firestore中出错,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,错误:对firestore.rules的任何更改,firestore emulator输出: i firestore: Change detected, updating rules... **⚠ firestore.rules:0:0 - ERROR Rules content empty. Compilation aborted.** ✔ firestore: Rules updated. 平台尝试:WSL以及virtualbox下的Ubuntu虚拟机 Codelab: 当前fire

错误:对firestore.rules的任何更改,firestore emulator输出:

i  firestore: Change detected, updating rules...
**⚠  firestore.rules:0:0 - ERROR Rules content empty. Compilation aborted.**
✔  firestore: Rules updated.
平台尝试:WSL以及virtualbox下的Ubuntu虚拟机

Codelab:

当前firestore。规则:

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-错误规则内容为空。编译已中止。”错误,但没有出现任何结果。其他人看到了吗?

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

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

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

遗憾的是,我目前的解决方法是停止并重新启动模拟器。然后事情就会如预期的那样开始运作


如果有人有不同的解决方案,我很乐意听到

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

遗憾的是,我目前的解决方法是停止并重新启动模拟器。然后事情就会如预期的那样开始运作


如果有人有不同的解决方案,我很乐意听到

出于好奇,您是否尝试过删除
rules_version='2'从一开始?我的理论是,仿真器无法识别该指令是一个错误。出于好奇,您是否尝试过删除
rules_version='2'从一开始?我的理论是,仿真器不识别该指令是一个错误。这可能是一个以行结尾的crlf问题吗?。。。我想当我在Ubuntu虚拟机上运行它时,遇到了与运行WSL提交的代码相同的错误。我想我可以在代码实验室的结帐处试试。好的。。。有趣/诡异:用vim编辑firestore.rules不会产生错误,但用VS代码编辑会产生错误。是否有可能一个人正在原地编辑,另一个人正在执行某种删除/替换操作,从而使文件在中间阶段为空?如果安装建议的WSL VSCode插件,WSL/VSCode中的问题就会消失。这是否可能是一个行结束crlf问题?。。。我想当我在Ubuntu虚拟机上运行它时,遇到了与运行WSL提交的代码相同的错误。我想我可以在代码实验室的结帐处试试。好的。。。有趣/诡异:用vim编辑firestore.rules不会产生错误,但用VS代码编辑会产生错误。是否有可能一个人正在原地编辑,另一个人正在执行某种删除/替换操作,从而使文件在中间阶段为空?如果安装建议的WSL VSCode插件,WSL/VSCode中的问题就会消失。