firebase.firebase는 함수가 아닙니다.
ionic 프로젝트에서 이전 Firebase 버전에서 최신 버전으로 업그레이드하려고 합니다.업그레이드를 위해 이 튜토리얼을 따랐습니다.이 페이지의 4단계에서는 마지막 문장이 막혀 있습니다.firebase.database().ref();
.
에러 메시지
TypeError: firebase.database is not a function
아래는 제 코드입니다.제발 도와주세요.
...
// Initialize Firebase
this.config = {
apiKey: "some-api-key",
authDomain: "myapp.firebaseapp.com",
databaseURL: "https://myapp.firebaseio.com",
storageBucket: "project-somenumber.appspot.com",
};
...
this.authWithOAuthPopup = function(type) {
var deferred = $q.defer();
console.log(service.config); // ---> Object {apiKey: "some-api-key", authDomain: "myapp.firebaseapp.com", databaseURL: "https://myapp.firebaseio.com", storageBucket: "project-somenumber.appspot.com"}
firebase.initializeApp(service.config);
console.log(firebase); // ---> Object {SDK_VERSION: "3.0.5", INTERNAL: Object}
service.rootRef = firebase.database().ref(); //new Firebase("https://rsb2.firebaseio.com"); ---> I am getting error on this line "TypeError: firebase.database is not a function"
service.rootRef.authWithOAuthPopup(type, function(error, authData) {
if (error) {
service.authError = error;
switch (error.code) {
case "INVALID_EMAIL":
console.log("The specified user account email is invalid.");
break;
case "INVALID_PASSWORD":
console.log("The specified user account password is incorrect.");
break;
case "INVALID_USER":
console.log("The specified user account does not exist.");
break;
default:
console.log("Error logging user in:", error);
}
deferred.resolve(service.authError);
} else {
service.authData = authData;
console.log("Authenticated successfully with payload:", authData);
deferred.resolve(service.authData);
}
return deferred.promise;
});
return deferred.promise;
}
var service = this;
갱신하다
최신 데이터베이스 라이브러리를 추가하면 이 문제는 해결됩니다.
여기서 내 코드 업데이트 중
this.authWithOAuthPopup = function(type) {
var deferred = $q.defer();
console.log(service.config);
firebase.initializeApp(service.config);
console.log(firebase);
service.rootRef = firebase.database(); //.ref(); //new Firebase("https://rsb2.firebaseio.com");
var provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().signInWithRedirect(provider);
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a Facebook Access Token. You can use it to access the Facebook API.
var token = result.credential.accessToken;
console.log(result);
// ...
}
// The signed-in user info.
var user = result.user;
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
// ...
});
return deferred.promise;
}
Ionic과 우연히 마주친 결과, 최신 Firebase Client를 사용할 때 모든 것이 포함되어 있지 않았습니다.Firebase를 다음과 같이 포함시킨 경우firebase-app
Firebase를 이러한 방식으로 포함할 경우 데이터베이스와 인증 조각이 번들되지 않으므로 별도로 필요합니다.
다음 항목을 에 추가합니다.index.html
포함시킨 후에firebase-app.js
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-database.js"></script>
CDN을 사용할 필요는 없습니다.bower(Ionic에서는 아마도 권장되는 방법) 또는 Browserify에서는 NPM을 사용할 수 있습니다.
// Browserify Setup
var firebase = require('firebase/app');
require('firebase/auth');
require('firebase/database');
Firebase Web Setup Docs에서 가져온 아래 토막
필요한 기능만 포함하면 앱에서 사용하는 코드의 양을 줄일 수 있습니다.개별적으로 설치할 수 있는 컴포넌트는 다음과 같습니다.
firebase-app - 코어 파이어베이스 클라이언트(필수).
firebase-auth - Firebase Authentication ( fire意 ) 。
firebase-database: Firebase Realtime Database(옵션).
Firebase-Storage - Firebase Storage(옵션).
CDN에서 필요한 개별 컴포넌트를 포함(firebase-app을 먼저 포함)
파티에는 조금 늦었지만, 누군가가 각진 구문을 알고 싶어할 경우 (또는 Ionic 4) 이것을 .module.ts 파일에 추가합니다(peterb가 말했듯이 /database import).
import { AuthService } from './auth.service';
import { AngularFireAuthModule } from 'angularfire2/auth';
import { AngularFireDatabaseModule } from 'angularfire2/database';
@NgModule({
imports: [
AngularFireAuthModule,
AngularFireDatabaseModule,
AngularFireModule.initializeApp(environment.firebase),
],
providers: [
]
})
컨스트럭터 firebase.http://https://123.firebaseio.com'의 URL을 알려줌으로써 이 문제를 해결했습니다.
첫 번째로, 사용하고 있는 것을 확인해 주세요.
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>
파이어베이스authWithOAuthPopup
새로운 버전에서는 조금 바뀌었습니다.
이제 ref를 사용하여 인증 방식을 호출하지 않습니다.사용하셔야 합니다.firebase.auth()
인스톨 되었다.
var auth = firebase.auth();
var provider = new firebase.auth.TwitterAuthProvider();
auth.signInWithPopup(provider).then(function(result) {
// User signed in!
var uid = result.user.uid;
}).catch(function(error) {
// An error occurred
});
또한 @angular/firebase 5.1.2에서 이 문제에 직면했습니다.이 문제는 @angular/cli 및 모든 의존관계를 최신 버전으로 업데이트하면 해결되었습니다.
유사한 오류(이것)를 겪고 있는 분들을 위해.react-native의 _database.native.on은 함수가 아닙니다.
- 파이어베이스 신규 서비스 추가 후 포드 설치 실행(firebase/auth...)
- 메트로 번들을 종료하고 "npx react-interest start"를 사용하여 다시 시작합니다.
- "npx react-metric run-ios"를 실행합니다.
그러면 새 빌드가 생성되고 오류가 사라집니다.
참고 자료: https://github.com/invertase/react-native-firebase/issues/3379
사용하다
var firebase = require('firebase/app');
require('firebase/database');
npm install --save firebase
그 후, 다음과 같이 입력합니다.
require("firebase/database");
은 FireBase를 .require()
위와 같이
firebase.database is not function (firebase.database is not function) 같은 에러가 발생하지만 다른 상황으로 인해 추가만 하면 됩니다.
위 및 Firebase 구성을 포함하는 javascript 링크.
페이지 요소가 로드될 때까지 스크립트가 로드되지 않으므로 스크립트에서 defer Attribute를 사용할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/38248723/firebase-database-is-not-a-function
'it-source' 카테고리의 다른 글
ng-class 조건은 변경되지만 클래스는 갱신되지 않음 (0) | 2023.02.08 |
---|---|
숫자인 PHP 개체 속성을 가져옵니다. (0) | 2023.02.08 |
여러 필드(숫자)에 의한 JavaScript 배열 정렬 (0) | 2023.02.08 |
AngularJ: ngInclude vs 디렉티브 (0) | 2023.02.08 |
WooCommerce 카트에 카트 아이템의 제품 ID를 가져옵니다. (0) | 2023.02.08 |