Uaktualnij pakiet SDK Admin do Node.js w wersji 10 (modułowy pakiet SDK)

W wersji 10 pakietu Admin Node.js SDK są wprowadzane 2 ważne zmiany:

  • Wycofanie obsługi Node.js 10 (jest to istotna zmiana)
  • Pakiet SDK korzysta z modułowego wzorca interfejsu API.

Ten przewodnik zawiera instrukcje i informacje, które pomogą deweloperom uaktualnić istniejące aplikacje Node.js z wcześniejszych wersji systemu Admin SDK do wersji 10.

Zaktualizuj Node.js do wersji 12 lub nowszej.

Wraz z wydaniem pakietu SDK Node.js dla administratorów w wersji 10 Firebase wycofała obsługę Node.js 10. Deweloperzy muszą używać pakietu Node.js w wersji 12 lub nowszej. Jeśli używasz pakietu Admin SDK Node.js razem z Cloud Functions for Firebase, uaktualnij Node.jsdo wersji 12 lub nowszej.

Używaj modułów zamiast przestrzeni nazw

Od samego początku pakiet Admin Node.js SDK oferuje stabilny interfejs API oparty na hierarchii zagnieżdżonych przestrzeni nazw. W rezultacie możesz być już zaznajomiony z tworzeniem kodu o takiej postaci:

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

Od wersji 10 pakiet Admin Node.js SDK oferuje wiele punktów wejścia modułu z nazwanymi eksportami. Zalecamy deweloperom używanie tych nowych punktów wejścia do uzyskiwania dostępu do różnych interfejsów API pakietu SDK zamiast korzystania z globalnej przestrzeni nazw admin.

Oto jak wygląda przykład powyżej z nowymi punktami wejścia do modułu:

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

Korzystanie z punktów wejściowych w wersji 10

Pamiętaj, że w wymienionych powyżej przykładach nie importujesz już globalnej adminprzestrzeni nazw. Zamiast tego importujesz tylko potrzebne symbole z kilku punktów wejścia w module. Oprócz tego deweloperzy TypeScript nie muszą już używać potrójnie zagnieżdżonych identyfikatorów typów, takich jak admin.auth.UserRecord i admin.database.Reference. Ponieważ każdy typ należy do dokładnie 1 modułu, możesz je po prostu zaimportować według ich krótkich nazw, np. UserRecord i Reference.

Oto wszystkie punkty wejścia modułu dostępne w pakiecie SDK w wersji 10:

  • firebase-admin/aplikacja
  • firebase-admin/auth
  • firebase-admin/database
  • Firebase-admin/firestore
  • firebase-admin/instance-id
  • Firebase-admin/machine-learning
  • firebase-admin/messaging
  • administrator-projektu/zarządzanie-projektem
  • firebase-admin/remote-config
  • firebase-admin/security-rules
  • firebase-admin/storage

Tabela poniżej zawiera składnię importu zastępczego dla każdej starszej funkcji przestrzeni nazw:

wersja 9 wersja 10
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();

Używanie wyeksportowanych funkcji zamiast metod w aplikacji

W starszym interfejsie API obiekt App udostępniał kilka metod, takich jak app.auth()app.database(). Zalecamy deweloperom, aby nie używali tych metod, a zamiast tego korzystali z tych samych punktów wejścia modułu opisanych powyżej, aby uzyskiwać instancje usługi ograniczone do danego obiektu App i wykonywać inne zadania związane z konkretną aplikacją.

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

Obsługa modułów ES

Wersja Node.js 12 i nowsze mają eksperymentalne wsparcie dla modułów ES, dzięki czemu nawet deweloperzy, którzy nie używają TypeScript, mogą używać w swoim kodzie słów kluczowych export i import. Od wersji 10 pakiet Admin Node.js SDK zapewnia też obsługę modułów ES, dzięki czemu deweloperzy implementujący moduły ES w zwykłym środowisku Node.js mogą importować pakiet SDK przy użyciu składni import.

Aby używać modułów ES w usłudze Admin SDK, najpierw upewnij się, że masz włączone obsługiwanie ESM w środowisku wykonawczym Node.js. Zwykle polega to na dodaniu pola "type": "module" do pliku package.json. Następnie możesz napisać kod aplikacji, który wygląda tak:

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