12

在以前版本的 Firebase 中,我使用以下方式导入 Typescript 定义User

import {User} from 'firebase';

在引入v8之后,此导入不再起作用:

模块 '"../../../../node_modules/firebase"' 没有导出的成员 'User'。您的意思是改用“从“../../../../node_modules/firebase”导入用户吗?

发行说明指出了 CJS 捆绑包已被删除的事实,但并未提及现在应该如何解决此导入问题。

任何帮助表示赞赏,在此先感谢您。

4

5 回答 5

12

你可以这样说:

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

或者,如果您想缩写它:

import firebase from "firebase/app"
type User = firebase.User
const user: User = ...
于 2020-10-27T19:41:43.450 回答
9

User在使用 Firebase JS SDK v8.0.0导入时,我能够解决我的问题,如下所示:

import {User} from '@firebase/auth-types';
于 2020-10-27T20:09:36.890 回答
6

对于 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)
于 2021-09-03T17:55:17.417 回答
1

您是否尝试过导入 firebase,然后使用 访问用户firebase.User?它显然更厚实,但对我有用。

编辑:我之前也遇到过导入冲突的问题——我有一个名为 firebase.ts 的文件,导致我的应用程序退出。只是提到它以防万一你类似的东西

于 2020-10-28T10:13:42.240 回答
0

importing的另一种选择firebase是在文件中添加 firebase 类型index.d.ts

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

type Firebase = typeof firebase.default

type FirebaseApp = firebase.default.app.App

type FirebaseUser = firebase.default.User

注意:我必须这样做,firebase.default而不是firebase因为我使用三斜杠指令/// <reference types="..." />

您可以.default通过在index.d.ts文件中导入 firebase 来省略:

import firebase from "firebase/app"

type Firebase = typeof firebase

type FirebaseApp = firebase.app.App

type FirebaseUser = firebase.User
于 2021-05-25T05:50:11.360 回答