Reactjs Typescript:Firebase应用程序类型缺少删除、安装、名称和选项
我对Typescript还不熟悉,并试图让它与Firebase一起工作。我有一个FirebaseProvider,它接收Firebase应用程序,配置方式如下:Reactjs Typescript:Firebase应用程序类型缺少删除、安装、名称和选项,reactjs,typescript,firebase,Reactjs,Typescript,Firebase,我对Typescript还不熟悉,并试图让它与Firebase一起工作。我有一个FirebaseProvider,它接收Firebase应用程序,配置方式如下: 从“firebase/app”导入firebase 导入“firebase/analytics” 导入“firebase/auth” 导入“firebase/firestore” 导入“firebase/functions” 导入“firebase/performance” 常量配置={ apiKey:process.env.REACT
从“firebase/app”导入firebase
导入“firebase/analytics”
导入“firebase/auth”
导入“firebase/firestore”
导入“firebase/functions”
导入“firebase/performance”
常量配置={
apiKey:process.env.REACT\u APP\u FIREBASE\u API\u KEY,
authDomain:process.env.REACT\u APP\u FIREBASE\u AUTH\u DOMAIN,
databaseURL:process.env.REACT\u APP\u FIREBASE\u DATABASE\u URL,
projectId:process.env.REACT\u APP\u FIREBASE\u PROJECT\u ID,
appId:process.env.REACT\u APP\u FIREBASE\u APP\u ID,
measurementId:process.env.REACT\u APP\u MEASUREMENT\u ID
}
如果(firebase.apps.length>0)firebase.app()
else firebase.initializeApp(配置)
导出{firebase}
我的应用程序入口点看起来像:
我将FirebaseProvider的道具声明如下:
接口FirebaseProviderProps{
firebase:firebase.default.app.app
子项:ReactElement | ReactElement[]
}
但是,我发现出现以下错误:
Type 'typeof firebase' is missing the following properties from type 'App': delete, installations, name, options
我要使用的正确Firebase类型是什么?我已经翻遍了SDK,似乎找不到任何其他相关的类型。看起来您在
firebase ProviderProps
中找到了字段firebase
的类型,如app.app
,但您已经在firebase
中为其指定了值,根据您编写的代码,该值只是默认导出(不是应用程序):
然后将其传递给提供商:
{/* assigned the default export that was re-exported */}
<FirebaseProvider firebase={app}>
<App />
</FirebaseProvider>
{/*分配了重新导出的默认导出*/}
在这一点上,重命名道具可能也有一定意义:
{/* assigned the default export that was re-exported */}
<FirebaseProvider app={app}>
<App />
</FirebaseProvider>
{/*分配了重新导出的默认导出*/}
Legend!真不敢相信我居然没看到这个。它解决了我的问题,非常感谢。
let app: firebase.app.App;
if (firebase.apps.length > 0) {
app = firebase.app();
} else {
app = firebase.initializeApp(config);
}
// export that instead of 'firebase'
export { app }
{/* assigned the default export that was re-exported */}
<FirebaseProvider firebase={app}>
<App />
</FirebaseProvider>
{/* assigned the default export that was re-exported */}
<FirebaseProvider app={app}>
<App />
</FirebaseProvider>