简体   繁体   English

Firebase v8 Typescript 用户定义导入

[英]Firebase v8 Typescript definition import for User

With previous version of Firebase I use to import the Typescript definition of the User as following:使用以前版本的 Firebase,我使用以下方式导入User的 Typescript 定义:

import {User} from 'firebase';

Following the introduction of v8 this import does not work anymore:在引入v8之后,此导入不再有效:

Module '"../../../../node_modules/firebase"' has no exported member 'User'.模块'"../../../../node_modules/firebase"'没有导出成员'User'。 Did you mean to use 'import User from "../../../../node_modules/firebase"' instead?您的意思是改用“从“../../../../node_modules/firebase”导入用户”吗?

The release notes points the fact that the CJS bundles was dropped, nevertheless, does not mention how this import should now be resolved.发行说明指出 CJS 捆绑包已被删除这一事实,但并未提及现在应如何解决此导入问题。

Any help appreciated, thank you in advance.任何帮助表示赞赏,在此先感谢您。

You can say this instead:你可以这样说:

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

Or if you want to abbreviate it:或者,如果您想缩写它:

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

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

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

Have you tried importing firebase and then accessing User with firebase.User ?您是否尝试过导入 firebase 然后使用firebase.User访问 User ? It's obviously way more chunky but worked for me.它显然更笨拙,但对我有用。

Edit: I was also having issues with conflicting imports previously - where I had a file called firebase.ts that was causing my app to zoink out.编辑:我之前也遇到了导入冲突的问题 - 我有一个名为 firebase.ts 的文件导致我的应用程序关闭。 Just mentioning it in case you by chance have something similar只要提到它如果你碰巧有类似的东西

another alternative to import ing firebase is to add the firebase types in an index.d.ts file:另一个替代import荷兰国际集团firebase是在添加火力类型index.d.ts文件:

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

type Firebase = typeof firebase.default

type FirebaseApp = firebase.default.app.App

type FirebaseUser = firebase.default.User

Note: I had to do firebase.default instead of firebase because I am using triple slash directives /// <reference types="..." />注意:我必须使用firebase.default而不是firebase因为我使用的是三重斜线指令/// <reference types="..." />

You can omit .default by just importing firebase in the index.d.ts file:您可以通过在index.d.ts文件中导入index.d.ts来省略.default

import firebase from "firebase/app"

type Firebase = typeof firebase

type FirebaseApp = firebase.app.App

type FirebaseUser = firebase.User

For V9.0.0(Web version 9 (modular), this can be done by对于 V9.0.0(Web 版本 9(模块化),这可以通过

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

Then you can use it by:然后您可以通过以下方式使用它:

// here direct use the type inside a hooks 
const [user, setUser] = useState<FirebaseUser | null>(null)
user: firebase.default.User | null = null;

Worked for me为我工作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM