bxxb
bxxb

Reputation: 804

Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com

While i click on the login button i get this error :

[19:49:11] [2018-12-25T20:49:57.389Z]  @firebase/database:, FIREBASE 
FATAL ERROR: Cannot parse Firebase url. Please use https://<YOUR 
FIREBASE>.firebaseio.com
- node_modules/@firebase/logger/dist/index.cjs.js:69:32 in 
defaultLogHandler
- node_modules/@firebase/logger/dist/index.cjs.js:159:31 in error
- node_modules/@firebase/database/dist/index.cjs.js:333:20 in fatal
- node_modules/@firebase/database/dist/index.cjs.js:1256:14 in 
parseRepoInfo
- node_modules/@firebase/database/dist/index.cjs.js:15103:38 in 
refFromURL
* src/modules/auth/api.js:24:24 in getUser
* src/modules/auth/api.js:19:32 in <unknown>
- node_modules/@firebase/auth/dist/auth.js:17:105 in <unknown>
- node_modules/@firebase/auth/dist/auth.js:20:199 in Fb
- ... 13 more stack frames from framework internals

I copied and pasted the config stuff directly from Firebase, so it should be correct, but I get this error anyway. What could be causing this? Is there any way the URL I'm copying from my database could be wrong somehow?

As you you can see in the error shown are in my file api.js in

.then((user) => getUser(user, callback))

and in

database.refFromURL('users').child(user.uid).once('value')

So here is my code from api.js is like this :

import { auth, database, provider } from "../../config/firebase";

export function register(data, callback) {
    const { email, password } = data;
    auth.createUserWithEmailAndPassword(email, password)
        .then((user) => callback(true, user, null))
        .catch((error) => callback(false, null, error));
}

export function createUser (user, callback) {
   database.refFromURL('users').child(user.uid).update({ ...user })
        .then(() => callback(true, null, null))
        .catch((error) => callback(false, null, {message: error}));
}

export function login(data, callback) {
    const { email, password } = data;
    auth.signInWithEmailAndPassword(email, password)
        .then((user) => getUser(user, callback))
        .catch((error) => callback(false, null, error));
}

export function getUser(user, callback) {
    database.refFromURL('users').child(user.uid).once('value')
        .then(function(snapshot) {

            const exists = (snapshot.val() !== null);

            if (exists) user = snapshot.val();

            const data = { exists, user }
            callback(true, data, null);
        })
        .catch(error => callback(false, null, error));
}

can anyone please help where i missed up

Upvotes: 4

Views: 9991

Answers (4)

arex123
arex123

Reputation: 529

I think there are mainly two types of realtime db urls , one ends with ".firebaseio.com" which is for US and other like EU and asia have url which ends with "firebasedatabase.app"

"Please use https://.firebaseio.com", this error comes at line when u call firebase.database(), It can happen that firebase library or module you are using are of old versions which can only make call for db whose url ends with firebaseio.com, so make sure to update it,

or you can just change the region of your realtime database to US region.

Upvotes: 1

Zakaul Haque
Zakaul Haque

Reputation: 21

Please go through this documentation and update to new modular type or if you want to use old structure then, update to

<script src="https://www.gstatic.com/firebasejs/8.5.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.5.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.5.0/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.5.0/firebase-storage.js"></script>

update all to version 8.5.0. Will work flawless

Upvotes: 2

bxxb
bxxb

Reputation: 804

i used

database.ref(`users/`+user.uid).once('value')

instead of

database.refFromURL('users').child(user.uid).once('value') 

and it works fine for me now.

Upvotes: 2

Frank van Puffelen
Frank van Puffelen

Reputation: 598847

The refFromURL method expects a fully qualified URL to the database. So something starting with https://<YOUR FIREBASE>.firebaseio.com as the error message shows.

You're trying to access a path within the configured database, in which case you should use ref(...) instead:

database.ref('users').child(user.uid).once('value')

Upvotes: 0

Related Questions