В версии 10 Admin Node.js SDK представлены два важных изменения:
- Поддержка Node.js 10 прекращена (это критическое изменение )
 - В SDK принят модульный шаблон API.
 
В этом руководстве содержатся инструкции и информация, которые помогут разработчикам обновить существующие приложения Node.js с более ранних версий Admin SDK до версии 10.
Обновите Node.js до версии 12 или выше.
С выпуском Admin Node.js SDK v10 компания Firebase прекратила поддержку Node.js 10. Разработчикам необходимо использовать Node.js 12 или более поздней версии при использовании Admin SDK . Если вы используете Admin Node.js SDK вместе с Cloud Functions for Firebase , убедитесь, что вы обновили версию Node.js до 12 или более поздней.
Используйте модули вместо пространств имен
С момента своего создания Admin Node.js SDK предлагал стабильный API, структурированный в виде иерархии вложенных пространств имён. В результате вы, возможно, уже знакомы с написанием кода, который выглядит примерно так:
// 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');
 Начиная с версии 10, Admin Node.js SDK предлагает несколько точек входа для модулей с именованными экспортами. Мы рекомендуем разработчикам использовать эти новые точки входа для доступа к различным API SDK вместо использования глобального пространства имён admin .
Вот как будет выглядеть приведенный выше пример с новыми точками входа модуля:
Машинопись
// 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');
Использование модульных точек входа v10
 Обратите внимание, что в приведённых выше примерах вы больше не импортируете глобальное пространство имён admin . Вместо этого вы явно импортируете только необходимые символы из нескольких точек входа модуля. Кроме того, разработчикам TypeScript больше не нужно использовать трижды вложенные идентификаторы типов, такие как admin.auth.UserRecord и admin.database.Reference . Поскольку каждый тип принадлежит ровно одному модулю, вы можете импортировать их по коротким именам, например, UserRecord и Reference .
Вот все точки входа модуля, доступные в SDK начиная с версии 10:
- firebase-admin/app
 - firebase-admin/auth
 - firebase-admin/база данных
 - firebase-admin/firestore
 - firebase-admin/instance-id
 - firebase-admin/машинное обучение
 - firebase-admin/messaging
 - firebase-admin/управление проектами
 - firebase-admin/remote-config
 - firebase-admin/security-rules
 - firebase-admin/storage
 
В следующей таблице показан синтаксис импорта замены для каждой из устаревших функций пространства имен:
| v9 | версия 10 | 
|---|---|
 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'   | 
Используйте экспортированные функции вместо методов в приложении
 В устаревшем API объект App предоставлял ряд методов, таких как app.auth() и app.database() . Мы рекомендуем разработчикам избегать использования этих методов и вместо этого использовать те же точки входа в модуль, описанные выше, для получения экземпляров служб, привязанных к заданному объекту App , и выполнения других задач, специфичных для приложения.
| v9 | версия 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';   | 
Поддержка модулей ES
 Node.js 12 и более поздние версии поддерживают экспериментальную поддержку ES-модулей, что позволяет даже разработчикам, не использующим TypeScript, использовать ключевые слова export и import в своём коде. Начиная с версии v10, Admin Node.js SDK также предоставляет поддержку ES-модулей, поэтому разработчики, реализующие ES-модули на чистом Node.js, могут импортировать SDK, используя синтаксис import .
 Чтобы использовать модули ES с Admin SDK , сначала убедитесь, что вы включили поддержку ESM для среды выполнения Node.js. Обычно это делается добавлением поля "type": "module" в файл package.json . После этого вы можете написать код приложения, который выглядит следующим образом:
// 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');