我有一个项目设置,其中我有一个web应用程序,它依赖于几个Firebase SDK,这些SDK是通过webpack dev server进行网页打包和服务的。
从我不需要太多细节就能收集到的信息来看,有一个最终的依赖项,它既有常规索引,也有es2017索引文件
有些中间依赖项同时具有这两种特性,比如
应用程序
还有一些只有es2017,例如
消息传递
,以及一些仅通用索引文件。
我遇到的问题是,我已经从应用程序级别调试了很长一段时间,当我在不同的文件中导入一个中间依赖项时,在某些情况下需要通用索引文件,在某些情况下需要相同库的es2017。
因此,在这里的错误stacktrace中,我试图初始化Firebase的消息服务:(暂时忽略缺少的承诺拒绝)
at Provider.getImmediate (index.cjs.js:153) // in component lib
at Module.getMessagingInWindow (index.esm2017.js:1155) // in messaging lib
at new MessagingWrapper (MessagingWrapper.js:76) // in my application
at FirebaseSession.push.56916.FirebaseSession.getMessaging (FirebaseSession.js:96)
at PushPubSubModule_Class.<anonymous> (PushPubSubModule.js:118)
at step (PushPubSubModule.js:63)
at Object.next (PushPubSubModule.js:44)
at fulfilled (PushPubSubModule.js:35)
最初加载消息传递模块时,它也会访问组件库,并使用正确的es2017索引文件,但在稍后我尝试实际获取消息传递服务实例时,它会转到另一个常规索引文件。
在所有情况下,我都使用与中相同的导入
import {somthing} from "@firebase/messaging"
我从来没有真正需要担心这些事情,可能会错过一些基本的东西,但这感觉像是一个预先确定从嵌套库加载哪个模块的网页错误。。。
你知道我能强迫webpack解析es2017索引文件的方法吗?
还是我应该打开一个虫子?
更多详情:
这是我的MessagingWrapper文件的传输代码:
第71行:转到消息库中正确的es2017索引文件和组件库中正确的es2017
其中第76行:指向消息传递中正确的es2017索引文件
行:
这里第1155行:实际上是到
firebase/应用程序
lib es2017文件来解析提供程序,返回到第1155行,然后调用getImmediate,它最终位于组件库中的常规索引文件中,如下所示:
我该怎么解决这个问题?