为用户导入Firebase v8 typescript 定义

b5lpy0ml  于 2022-12-30  发布在  TypeScript
关注(0)|答案(5)|浏览(112)

使用以前版本的Firebase,我用于导入User的Typescript定义,如下所示:

import {User} from 'firebase';

引入v8后,此导入不再起作用:
模块"../../../../node_modules/firebase”没有导出的成员“User”。您是否希望使用“从../../../../node_modules/firebase导入用户”来代替?
release notes指出了CJS包被删除的事实,但是没有提到现在应该如何解决这个导入问题。
任何需要帮助的地方,先谢谢你。

eqqqjvef

eqqqjvef1#

你可以这样说:

import firebase from "firebase/app"
const user: firebase.User = ...

或者,如果您想简化它:

import firebase from "firebase/app"
type User = firebase.User
const user: User = ...
3yhwsihp

3yhwsihp2#

对于V9.0.0(Web版本9(模块化)),可以通过以下方式完成此操作

// make alias for greater readability
import { User as FirebaseUser } from "firebase/auth";

然后,您可以通过以下方式使用它:

// here direct use the type inside a hooks 
const [user, setUser] = useState<FirebaseUser | null>(null)
sqyvllje

sqyvllje3#

我能够解决我的问题,而导入User与thee Firebase JS SDK v8.0.0如下:

import {User} from '@firebase/auth-types';
a5g8bdjr

a5g8bdjr4#

你有没有试过导入firebase然后用firebase.User访问User?它显然更笨重,但对我很有效。
编辑:我之前也遇到过导入冲突的问题--我有一个名为firebase.ts的文件导致我的应用缩小。只是为了以防你 * 碰巧 * 遇到类似的情况而提一下

zpqajqem

zpqajqem5#

import ing firebase的另一种替代方法是在index.d.ts文件中添加firebase类型:

/// <reference types="firebase" />

type Firebase = typeof firebase.default

type FirebaseApp = firebase.default.app.App

type FirebaseUser = firebase.default.User

注意:我必须使用firebase.default而不是firebase,因为我使用的是三斜杠指令/// <reference types="..." />
您可以通过在index.d.ts文件中导入firebase来忽略.default

import firebase from "firebase/app"

type Firebase = typeof firebase

type FirebaseApp = firebase.app.App

type FirebaseUser = firebase.User

相关问题