Firebase 在Firestore中,我如何防止;请确保您使用的Firestore类型来自同一NPM包;错误
我有几个使用Firestore的NPM代码库。一个是客户端,一个是服务器端,我正在尝试将一些代码重构为一个公共依赖代码库。服务器代码库使用firebase admin作为其依赖项,但如果我尝试使用sentinel类型(例如firebase.firestore.Timestamp)设置对象,则会发生以下错误:Firebase 在Firestore中,我如何防止;请确保您使用的Firestore类型来自同一NPM包;错误,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有几个使用Firestore的NPM代码库。一个是客户端,一个是服务器端,我正在尝试将一些代码重构为一个公共依赖代码库。服务器代码库使用firebase admin作为其依赖项,但如果我尝试使用sentinel类型(例如firebase.firestore.Timestamp)设置对象,则会发生以下错误: Please ensure that the Firestore types you are using are from the same NPM package 我可以通过将实例注入我
Please ensure that the Firestore types you are using are from the same NPM package
我可以通过将实例注入我的库代码库来避免混合firestore实现,例如:
import * as admin from "firebase-admin";
const libraryCode = new MyFirestoreLibrary(admin.firestore())
但是,有没有办法在库代码中访问这些sentinel类型
下面是我希望实现的一个示例:快速问题:您只需要将firebase admin作为一个依赖项,对吗?我相信firebase admin的最新版本现在会为大多数类型导入客户端版本,例如,通常会将它们设置为别名。或者至少我可以从中读到,所以你可能应该调用别名,但如果没有别名,我不能确定。你能提供一个吗?不正确(也许我认为这是可能的)。共享公共库仅导入firebase(而不是firebase admin),因为它在客户端和服务器上都使用。服务器库导入firebase管理员、firebase和共享公共库。是否存在这种设置可能起作用的使用模式?我有一对简单的代码基示例来演示这个问题。看:我刚刚意识到我拼写的是“importanting”而不是importing。那太尴尬了。但是,是的,我担心要在不混合firestore类型的情况下访问sentinel类型,您必须将客户端和管理员的代码分开,这将破坏您希望建立的库代码的目的;而利用这两种方法会导致您当前遇到的错误,或者导致不明确的解决错误(在管理员端时,很可能是因为您已将firebase和(而不是管理员)导入到库中)。我建议在使用admin中的库时键入casting,但它是模糊的OK谢谢。这是否在Firebase团队的功能请求范围内?原因似乎只是依靠中的“instanceof”来检查类型兼容性。在后面的检查中,“isMomentJsType”的测试不使用“instanceof”,因此将允许不同版本的momentjs对象混合使用。为功能请求添加“isFirestoreType”是否可行?我相信会是这样的,请求本身并不是什么稀奇古怪的东西,尽管它可能与预期的功能背道而驰。我确实相信实现“isFirestoreType”检查是可行的,但我不能确认它是否会成功,它可能会导致用户错误和/或意外攻击。尽管如此,我还是鼓励您通过请求,因为Firebase团队可能比我更了解如何实现这一点以及它的可行性。