Version 10 des Admin Node.js SDK bringt zwei wichtige Änderungen mit sich:
- Die Unterstützung für Node.js 10 wird eingestellt (wesentliche Änderung)
- Das SDK verwendet ein modulares API-Muster.
Diese Anleitung enthält Anleitungen und Informationen, mit denen Entwickler vorhandene Node.js-Anwendungen von früheren Versionen von Admin SDK auf Version 10 aktualisieren können.
Aktualisieren Sie Node.js auf Version 12 oder höher.
Mit der Version 10 des Admin Node.js SDK hat Firebase die Unterstützung für Node.js 10 eingestellt. Entwickler müssen Node.js 12 oder höher verwenden, wenn sie die Admin SDK verwenden. Wenn Sie das Admin Node.js SDK zusammen mit Cloud Functions for Firebase verwenden, müssen Sie Ihre Node.js-Version auf Version 12 oder höher aktualisieren.
Module anstelle von Namespaces verwenden
Seit seiner Einführung bietet das Admin Node.js SDK eine stabile API, die als verschachtelte Namespacehierarchie strukturiert ist. Daher sind Sie möglicherweise mit dem Schreiben von Code vertraut, der so aussieht:
// Import the global admin namespace
import * as admin from 'firebase-admin';
const app: admin.app.App = admin.initializeApp();
const token: string = await admin.auth().createCustomToken('alice');
const user: admin.auth.UserRecord = await admin.auth().getUser('bob');
Ab Version 10 bietet das Admin Node.js SDK mehrere Moduleinstiegspunkte mit benannten Exporten. Wir empfehlen Entwicklern, diese neuen Einstiegspunkte zu verwenden, um auf die verschiedenen APIs des SDKs zuzugreifen, anstatt den globalen admin
-Namespace zu verwenden.
So würde das Beispiel oben mit den neuen Modul-Einstiegspunkten aussehen:
TypeScript
// Import only what you need
import { initializeApp, App } from 'firebase-admin/app';
import { getAuth, UserRecord } from 'firebase-admin/auth';
const app: App = initializeApp();
const token: string = await getAuth().createCustomToken('alice');
const user: UserRecord = getAuth().getUser('bob');
Node.js
// Import only what you need
const { initializeApp } = require('firebase-admin/app');
const { getAuth } = require('firebase-admin/auth');
const app = initializeApp();
const token = await getAuth().createCustomToken('alice');
const user = getAuth().getUser('bob');
Modulare v10-Einstiegspunkte verwenden
Beachten Sie, dass Sie in den obigen Beispielen keinen globalen admin
-Namespace mehr importieren. Stattdessen importieren Sie nur die Symbole, die Sie benötigen, aus mehreren Modul-Einstiegspunkten. Außerdem müssen TypeScript-Entwickler keine dreifach verschachtelten Typ-IDs wie admin.auth.UserRecord
und admin.database.Reference
mehr verwenden. Da jeder Typ genau einem Modul zugewiesen ist, können Sie sie einfach anhand ihrer Kurznamen wie UserRecord
und Reference
importieren.
Hier sind alle Modul-Einstiegspunkte, die in der Version 10 des SDK verfügbar sind:
- firebase-admin/app
- Firebase-Administrator/Authentifizierung
- firebase-admin/database
- Firebase-Administrator/Firestore
- Firebase-Administrator/Instanz-ID
- firebase-admin/machine-learning
- firebase-admin/messaging
- Firebase-Administrator/Projektmanagement
- firebase-admin/remote-config
- firebase-admin/security-rules
- firebase-admin/storage
In der folgenden Tabelle finden Sie die Ersatzimportsyntax für jede der alten Namespacefunktionen:
v9 | v10 |
---|---|
admin.initializeApp()
|
import { initializeApp } from 'firebase-admin/app'
|
admin.app()
|
import { getApp } from 'firebase-admin/ap'
|
admin.credential.cert()
|
import { cert } from 'firebase-admin/app'
|
admin.auth()
|
import { getAuth } from 'firebase-admin/auth'
|
admin.database()
|
import { getDatabase } from 'firebase-admin/database'
|
admin.firestore()
|
import { getFirestore } from 'firebase-admin/firestore'
|
admin.instanceId()
|
import { getInstanceId } from 'firebase-admin/instance-id'
|
admin.machineLearning()
|
import { getMachineLearning } from 'firebase-admin/machine-learning'
|
admin.messaging()
|
import { getMessaging } from 'firebase-admin/messaging'
|
admin.projectManagement()
|
import { getProjectManagement } from 'firebase-admin/project-management'
|
admin.remoteConfig()
|
import { getRemoteConfig } from 'firebase-admin/remote-config'
|
admin.securityRules()
|
import { getSecurityRules } from 'firebase-admin/security-rules'
|
admin.storage()
|
import { getStorage } from 'firebase-admin/storage'
|
In der App exportierte Funktionen anstelle von Methoden verwenden
In der alten API wurden für das App
-Objekt mehrere Methoden wie app.auth()
und app.database()
freigegeben. Wir empfehlen Entwicklern, diese Methoden nicht zu verwenden, sondern stattdessen die oben beschriebenen Modul-Einstiegspunkte zu verwenden, um Dienstinstanzen für ein bestimmtes App
-Objekt abzurufen und andere appspezifische Aufgaben auszuführen.
v9 | Version 10 |
---|---|
app.auth()
|
import { getAuth } from 'firebase-admin/auth';
|
app.database()
|
import { getDatabase } from 'firebase-admin/database';
|
app.database(url)
|
import { getDatabaseWithUrl } from 'firebase-admin/database';
|
app.firestore()
|
import { getFirestore } from 'firebase-admin/firestore'
|
app.instanceId()
|
import { getInstanceId } from 'firebase-admin/instance-id'
|
app.machineLearning()
|
import { getMachineLearning } from 'firebase-admin/machine-learning'
|
app.messaging()
|
import { getMessaging } from 'firebase-admin/messaging'
|
app.projectManagement()
|
import { getProjectManagement } from 'firebase-admin/project-management'
|
app.remoteConfig()
|
import { getRemoteConfig } from 'firebase-admin/remote-config'
|
app.securityRules()
|
import { getSecurityRules } from 'firebase-admin/security-rules'
|
app.storage()
|
import { getStorage } from 'firebase-admin/storage'
|
app.delete()
|
import { deleteApp } from 'firebase-admin/app';
|
Unterstützung für ES-Module
Node.js 12 und höher bieten experimentelle Unterstützung für ES-Module, sodass auch Entwickler ohne TypeScript die Schlüsselwörter export
und import
in ihrem Code verwenden können. Ab Version 10 unterstützt das Admin Node.js SDK auch ES-Module. Entwickler, die ES-Module in reinem Node.js implementieren, können das SDK dann mit der import
-Syntax importieren.
Damit Sie ES-Module mit Admin SDK verwenden können, müssen Sie zuerst die ESM-Unterstützung für Ihre Node.js-Laufzeit aktiviert haben. Dazu wird normalerweise das Feld "type":
"module"
in die Datei package.json
eingefügt. Dann können Sie Anwendungscode schreiben, der so aussieht:
// With {type: module} in the package.json...
// Import only what you need
import { initializeApp } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';
const app = initializeApp();
const token = await getAuth().createCustomToken('alice');
const user = getAuth().getUser('bob');