获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Upgrade auf Node.js SDK Admin SDK v10 (modulares SDK)

Version 10 des Admin Node.js SDK führt zwei wichtige Änderungen ein:

  • Die Unterstützung für Node.js 10 wird eingestellt (dies ist eine Breaking Change )
  • Das SDK hat ein modulares API-Muster angenommen

Dieses Handbuch enthält Anweisungen und Informationen, die Entwicklern dabei helfen sollen, vorhandene Node.js-Apps von früheren Versionen des Admin SDK auf v10 zu aktualisieren.

Aktualisieren Sie Node.js auf v12 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 das Admin SDK verwenden. Wenn Sie das Admin Node.js SDK zusammen mit Cloud Functions for Firebase verwenden, stellen Sie sicher, dass Sie Ihre Node.js-Version auf 12 oder höher aktualisiert haben.

Verwenden Sie Module anstelle von Namespaces

Seit seiner Einführung bietet das Admin Node.js SDK eine stabile API, die als verschachtelte Namespace-Hierarchie strukturiert ist. Infolgedessen sind Sie möglicherweise mit dem Schreiben von Code vertraut geworden, der wie folgt 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 v10 bietet das Admin Node.js SDK mehrere Modul-Einstiegspunkte mit benannten Exporten. Wir empfehlen Entwicklern, diese neuen Einstiegspunkte zu verwenden, um auf die verschiedenen APIs des SDK zuzugreifen, anstatt den globalen admin Namespace zu verwenden.

So würde das obige Beispiel mit den neuen Modul-Einstiegspunkten aussehen:

Typoskript

// 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');

Verwenden von modularen v10-Einstiegspunkten

Beachten Sie, dass Sie in den obigen Beispielen keinen globalen admin Namespace mehr importieren. Stattdessen importieren Sie explizit nur die Symbole, die Sie von mehreren Modul-Einstiegspunkten benötigen. Außerdem müssen TypeScript-Entwickler nicht länger dreifach verschachtelte Typkennungen wie admin.auth.UserRecord und admin.database.Reference . Da jeder Typ zu genau einem Modul gehört, können Sie sie einfach anhand ihrer Kurznamen wie UserRecord und Reference importieren.

Hier sind alle Moduleinstiegspunkte, die im SDK ab v10 verfügbar sind:

  • firebase-admin/app
  • firebase-admin/auth
  • firebase-admin/database
  • firebase-admin/firestore
  • firebase-admin/Instanz-ID
  • firebase-admin/machine-learning
  • firebase-admin/messaging
  • firebase-admin/projektmanagement
  • firebase-admin/remote-config
  • Firebase-Admin/Sicherheitsregeln
  • firebase-admin/storage

Die folgende Tabelle zeigt die Ersetzungsimportsyntax für jede der Legacy-Namespace-Funktionen:

v9 v10
admin.initializeApp() import { initializeApp } from 'firebase-admin/app'

initializeApp();

admin.app() import { getApp } from 'firebase-admin/ap'

getApp();

admin.credential.cert() import { cert } from 'firebase-admin/app'

cert();

admin.auth() import { getAuth } from 'firebase-admin/auth'

getAuth();

admin.database() import { getDatabase } from 'firebase-admin/database'

getDatabase();

admin.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore();

admin.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId();

admin.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning();

admin.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging()

admin.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement();

admin.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig();

admin.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules()

admin.storage() import { getStorage } from 'firebase-admin/storage'

getStorage();

Verwenden Sie exportierte Funktionen anstelle von Methoden in der App

In der Legacy-API stellte das App -Objekt eine Reihe von Methoden wie app.auth() und app.database() . Wir empfehlen Entwicklern, die Verwendung dieser Methoden zu vermeiden und stattdessen dieselben oben beschriebenen Moduleintrittspunkte zu verwenden, um Dienstinstanzen zu erhalten, die auf ein bestimmtes App -Objekt beschränkt sind, und andere App-spezifische Aufgaben auszuführen.

v9 v10
app.auth() import { getAuth } from 'firebase-admin/auth';

getAuth(app);

app.database() import { getDatabase } from 'firebase-admin/database';

getDatabase(app);

app.database(url) import { getDatabaseWithUrl } from 'firebase-admin/database';

getDatabaseWithUrl(url, app);

app.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore(app);

app.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId(app);

app.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning(app);

app.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging(app);

app.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement(app);

app.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig(app);

app.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules(app);

app.storage() import { getStorage } from 'firebase-admin/storage'

getStorage(app);

app.delete() import { deleteApp } from 'firebase-admin/app';

deleteApp(app);

Unterstützung von ES-Modulen

Node.js 12 und höher bietet experimentelle Unterstützung für ES-Module, sodass selbst Nicht-TypeScript-Entwickler die export und import -Schlüsselwörter in ihrem Code verwenden können. Ab Version v10 bietet das Admin Node.js SDK auch Unterstützung für ES-Module, sodass Entwickler, die ES-Module auf einfachem Node.js implementieren, das SDK mithilfe der Importsyntax import können.

Um ES-Module mit dem Admin SDK zu verwenden, stellen Sie zunächst sicher, dass Sie die ESM-Unterstützung für Ihre Node.js-Laufzeit aktiviert haben. Dies geschieht in der Regel durch Hinzufügen des Felds "type": "module" zu Ihrer Datei „ package.json “. 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');