我正在尝试将 Firebase 的实时数据库实现到我的 TypeScript React 应用程序中,基于此 Medium 帖子:https ://levelup.gitconnected.com/todo-app-using-firebase-react-typescript-ea0a34bd417d
在配置步骤中,我收到错误属性“database”在“firebaseapp”类型上不存在 ts(2339)

我搜索了错误但找不到答案,有人可以帮忙吗?这是我第一次问问题,所以如果我的问题给您带来任何不便,我很抱歉,非常感谢你们的帮助
我正在学习Firebase使用身份验证NextJS,尝试理解使用多个源(文章/youtube),但我遇到了这个错误
ReferenceError: Cannot access 'auth' before initialization
老实说我仍在尝试寻找the source但仍然卡住了
这是我的firebase.js
import { firebase, initializeApp } from "firebase/app";
import { getAnalytics } from "firebase/analytics";
const firebaseConfig = {
apiKey: process.env.APIKEY,
authDomain: process.env.AUTH,
projectId: process.env.PID,
storageBucket: process.env.BUCKET,
messagingSenderId: process.env.MSID,
appId: process.env.AID,
measurementId: process.env.MID,
};
const app = !firebase.apps.length
? initializeApp(firebaseConfig)
: firebase.app();
const analytics = getAnalytics(app);
const auth = app.auth();
const db = app.firestore();
const googleProvider = new firebase.auth.GoogleAuthProvider();
export {
auth,
db,
signInWithGoogle,
... …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 cloudflare 工作人员来执行经过身份验证的操作。
我使用 firebase 进行身份验证,并可以访问通过的访问令牌,但由于 firebase-admin 使用 nodejs 模块,它无法在平台上工作,因此我只能手动验证令牌。
我一直在尝试使用 Crypto API 进行身份验证,并最终让它导入公钥签署令牌以检查其是否有效,但我一直收到 FALSE。我正在努力弄清楚为什么它总是返回 false 的有效性。
我导入的加密密钥以“秘密”类型输入,我希望它是“公开”的。
任何想法或帮助都将是巨大的。在过去的几天里我一直用头撞桌子试图解决这个问题
这是我到目前为止所拥有的:
function _utf8ToUint8Array(str) {
return Base64URL.parse(btoa(unescape(encodeURIComponent(str))))
}
class Base64URL {
static parse(s) {
return new Uint8Array(Array.prototype.map.call(atob(s.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '')), c => c.charCodeAt(0)))
}
static stringify(a) {
return btoa(String.fromCharCode.apply(0, a)).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_')
}
}
export async function verify(userToken: string) {
let jwt = decodeJWT(userToken)
var jwKey = await fetchPublicKey(jwt.header.kid);
let publicKey = await importPublicKey(jwKey);
var isValid = await verifyPublicKey(publicKey, userToken);
console.log('isValid', …Run Code Online (Sandbox Code Playgroud) javascript jwt firebase firebase-authentication cloudflare-workers
我将以下代码与 Firebase SDK 8 一起使用。
const db = firebase.firestore();
const collectionRef = db.collection(collectionName);
var query = collectionRef.where('isFinal', '==', true);
query = query.where(firebase.firestore.FieldPath.documentId(), 'in', docIds);
return query;
Run Code Online (Sandbox Code Playgroud)
我想用模块化 SDK 替换它的代码。所以我写了,
const dbInstance = getFirestore(firebaseApp);
const collectionRef = collection(dbInstance, collectionName);
query(collectionRef, where(???, 'in', docIds));
return query;
Run Code Online (Sandbox Code Playgroud)
但不知何故,我找不到获取 FieldPath 的语法。从参考文献中,我可以读到,
/**
* Returns a special sentinel `FieldPath` to refer to the ID of a document.
* It can be used in queries to sort or filter by the document ID.
*/
export declare …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个网络应用程序,您可以在其中使用谷歌帐户登录并注册帐户。我已经设法做到这一点,以便他们可以使用 signInWithPopup(provider) 登录,但不确定如何实现注册。有什么建议么?或者知道我可以使用 firebase 中的任何功能吗?
我尝试使用 React 进行 firabase 身份验证,但它显示错误,"Attempted import error: 'firebase/app' does not contain a default export (imported as 'firebase')". 如果我使用import * as firebase from "firebase/app",则停止显示错误的代码。
import firebase from 'firebase/app';
import 'firebase/auth';
const app = firebase.initializeApp({
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_FIREBASE_APP_ID
});
export const auth = app.auth();
export default app;
Run Code Online (Sandbox Code Playgroud) javascript firebase reactjs firebase-authentication firebase-realtime-database
所以我试图增加数据以将数字发送到其他用户的数字。
const sendNum = async(e) => {
e.preventDefault();
const targetQuery = query(userCol, where("keycode", "==", parseInt(target)));
const targetSnapshot = await getDocs(targetQuery)
targetSnapshot.forEach((document) => {
console.log(document.data().num)
console.log(document.id)
const targetRef = doc(db, 'users', document.id)
setDoc(targetRef, {
num: // increment user data here
}, {merge: true})
})
}
Run Code Online (Sandbox Code Playgroud)
但是我找到的文档,我不太理解它们。而我所理解的,它已经过时了。所以如果有人知道怎么做我会很高兴:)
我得到了这个简单的表单,用于注册用户并将 uid 和电子邮件数据发送到 firestore 上的集合,我使用最新版本的 Firebase 9 w/ 模块化。身份验证工作得很好,但 firestore 部分却不行。它向我抛出一个错误:
TypeError: Cannot read properties of undefined (reading 'indexOf')
at Function.fromString (path.ts:229)
at Ac2 (reference.ts:374)
at Login.jsx:29
Run Code Online (Sandbox Code Playgroud)
我不知道这是什么意思,我试图按照“用户/(这里是 useruid)/所有用户数据”的顺序将注册用户的电子邮件和 uid 信息上传到 firestore,但会抛出该错误。
我留下我的代码:
import React, { useState, useEffect, useCallback } from 'react'
import { auth, db } from "../firebase"
import { createUserWithEmailAndPassword } from "firebase/auth";
import { collection, doc, addDoc, setDoc } from "firebase/firestore";
function Login() {
const [email, setEmail] = useState('')
const [pass, setPass] = useState('')
const [error, setError] …Run Code Online (Sandbox Code Playgroud) 我有一个用户具有以下自定义用户声明,
customClaims: { role: 'admin' },
Run Code Online (Sandbox Code Playgroud)
如何在云 Firestore 规则中访问此角色属性(管理员)?
我正在使用下面的代码,但它不起作用。需要做什么才能工作?
match /companies/{document=**} {
allow read: if request.auth != null;
allow write: if request.auth != null && request.customClaims.role == "admin";
}
Run Code Online (Sandbox Code Playgroud) firebase ×10
javascript ×7
reactjs ×3
android ×1
java ×1
jwt ×1
next.js ×1
typescript ×1
vue.js ×1
web ×1