无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase

Posted

技术标签:

【中文标题】无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase【英文标题】:Cannot resolve module "firebase" from 'firebase.js' : Firebase could not be found within the project 【发布时间】:2021-01-06 12:03:48 【问题描述】:

我在将 firebase 引入该项目时遇到问题,我真的不确定出了什么问题?所有 firebase 代码(项目特定的配置代码除外)与另一个(工作)项目完全相同...

我将 react-native 与 expo 一起使用,并将 FB 数据库作为 Web 项目。

我在项目根级别的名为 firebase.js 的文件中初始化数据库,它位于 app.js 旁边。数据库还没有安全规则,所以我删除了一些信息,但它是您对 api 密钥的期望。

import * as firebase from 'firebase';
import 'firebase/firestore';

const firebaseConfig = 
    apiKey: "removed for post",
    authDomain: "removed for post",
    databaseURL: "removed for post",
    projectId: "goalsdev-7eb67",
    storageBucket: "goalsdev-7eb67.appspot.com",
    messagingSenderId: "362368452051",
    appId: "removed for post",
    measurementId: "G-CNRGY3FTLE"
;

firebase.initializeApp(firebaseConfig);

export default firebase;

然后我尝试像这样使用它......

import firebase from 'firebase'

这在 /screens/signUpFinal 中,也尝试过导入为 'firebase.js'、'../firebase' 和 '../firebase.js '

package.json 是:

...
"dependencies": 
    "@react-native-community/masked-view": "0.1.10",
    "@react-native-firebase/app": "^8.4.3",
    "@react-native-firebase/auth": "^9.2.3",
    ...
...

【问题讨论】:

【参考方案1】:

第一次运行

npm install --save firebase

而不是这个:

import * as firebase from "firebase"

使用这个:

import * as firebase from "firebase/app";

来源:https://firebase.google.com/docs/web/setup#node.js-apps

还有这个:

import firebase from 'firebase'

到这里:

import firebase from '../firebase'

并删除 @react-native-firebase 库,因为它们不适用于 expo。

【讨论】:

嗨,卡里姆!我在最初的问题中谈到了这一点,但我确实尝试了这个,但仍然遇到同样的错误。执行“./”实际上仍然指向屏幕文件夹内部,而不是项目的根目录。那和“../”都不起作用。 我明白了,我尝试按照您上面所说的进行操作,并通过 firebase/app 不在项目中的错误来解决。我安装了一个@react-native-firebase/app。我回去运行 npm install firebase 并修复它。不久前,我尝试用“react-native-firebase/app”替换“firebase”导入,但遇到了同样的错误。猜猜这就是为什么我没有早点想到这个。无论哪种方式,感谢您的帮助!搞定了。 很高兴我能帮上忙 ?,但是如果您使用 expo,则无法使用 firebase 的所有功能,您只能使用您现在正在使用的网络版本,以获取更多信息:rnfirebase.io/#expo docs.expo.io/guides/using-firebase/#usage-with-expo【参考方案2】:

我发现这是在 React.js 中使用的最好/最简单的方法,没有问题......你可以尝试像这样导入 ("firebase": "^9.6.1",) :

        import firebase from 'firebase/compat/app';
        import 'firebase/compat/auth';
        import 'firebase/compat/firestore';

创建你的配置文件.....

    const firebaseConfig =  your config data ...;

然后你就可以这样使用它而不会出现任何恼人的错误:

    const firebaseApp = firebase.initializeApp(firebaseConfig);

    const db = firebaseApp.firestore();

    const auth = firebase.auth();

    const provider = new firebase.auth.GoogleAuthProvider();

希望对遇到和我一样问题的人有所帮助

【讨论】:

【参考方案3】:

我上一次必须安装 firebase 是在 6 个月前,那是“firebase”:“^8.6.2”。配置看起来像这样;

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/storage';
import 'firebase/messaging';
import 'firebase/analytics';
import 
API_KEY,
AUTH_DOMAIN,
DATABASE_URL,
PROJECT_ID,
STORAGE_BUCKET,
MESSAGING_SENDER_ID,
APP_ID,
MEASUREMENT_ID,
MESSAGING_VAPID_KEY,
 from '../config';

const config = 
 apiKey: API_KEY,
 authDomain: AUTH_DOMAIN,
 databaseURL: DATABASE_URL,
 projectId: PROJECT_ID,
 storageBucket: STORAGE_BUCKET,
 messagingSenderId: MESSAGING_SENDER_ID,
 appId: APP_ID,
 measurementId: MEASUREMENT_ID,
;

// Initialize Firebase App with Configurations
firebase.initializeApp(config);

// Setup Firestore
const analytics = firebase.analytics();
const database = firebase.firestore();
const storage = firebase.storage();

// Setup push messaging
let messaging = null;
if (firebase.messaging.isSupported()) 
  messaging = firebase.messaging();
  messaging.usePublicVapidKey(MESSAGING_VAPID_KEY);


export 
  firebase, storage, messaging, analytics, config, database as default,
;

截至发帖时,Firebase 为 v9,并且发生了很多变化。请参考官方文档here

获取有关在项目上设置 firebase 的帮助。

【讨论】:

【参考方案4】:

cd src from project file inside src do npm install firebase,我遇到了同样的问题,但是这个解决方案解决了我的问题。

【讨论】:

以上是关于无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

运行 expo start 时无法解析模块 fs

解析 Firebase 模块(React-Native)

无法使用 React Native Expo 导入 Firebase JS SDK

已成功找到“Firebase”包。但是,这个包本身指定了一个无法解析的“主”模块字段

Firebase FCM React 项目问题 - firebase-messaging-sw.js 类型错误?

python fire库的使用