Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Atualize para o SDK Admin SDK do Node.js v10 (SDK modular)

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A versão 10 do SDK Admin Node.js apresenta duas mudanças importantes:

  • O suporte para Node.js 10 foi descontinuado (esta é uma alteração importante )
  • O SDK adotou um padrão de API modular

Este guia fornece instruções e informações para ajudar os desenvolvedores a atualizar aplicativos Node.js existentes de versões anteriores do SDK Admin para a v10.

Atualize o Node.js para v12 ou superior

Com a versão Admin Node.js SDK v10, o Firebase descontinuou o suporte para Node.js 10. Os desenvolvedores devem usar o Node.js 12 ou superior ao usar o Admin SDK. Se você estiver usando o SDK Admin Node.js junto com o Cloud Functions para Firebase, certifique-se de ter atualizado sua versão do Node.js para 12 ou superior.

Use módulos em vez de namespaces

Desde a sua criação, o SDK Admin Node.js oferece uma API estável estruturada como uma hierarquia de namespace aninhada. Como resultado, você pode ter se familiarizado com a escrita de código que se parece com isso:

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

A partir da v10, o Admin Node.js SDK oferece vários pontos de entrada de módulo com exportações nomeadas. Recomendamos que os desenvolvedores usem esses novos pontos de entrada para acessar as várias APIs do SDK, em vez de usar o namespace de admin global.

Veja como ficaria o exemplo acima com os novos pontos de entrada do módulo:

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

Usando pontos de entrada modulares v10

Observe que, nos exemplos acima, você não está mais importando um namespace de admin global. Em vez disso, você importa explicitamente apenas os símbolos necessários de vários pontos de entrada do módulo. Além disso, os desenvolvedores de TypeScript não precisam mais usar identificadores de tipo aninhados triplos, como admin.auth.UserRecord e admin.database.Reference . Como cada tipo pertence a exatamente um módulo, você pode importá-los apenas por seus nomes curtos, como UserRecord e Reference .

Aqui estão todos os pontos de entrada do módulo disponíveis no SDK a partir da v10:

  • firebase-admin/aplicativo
  • firebase-admin/auth
  • firebase-admin/banco de dados
  • firebase-admin/firestore
  • firebase-admin/instance-id
  • firebase-admin/machine-learning
  • firebase-admin/mensagens
  • administração do firebase/gerenciamento de projetos
  • firebase-admin/remoto-config
  • firebase-admin/security-rules
  • firebase-admin/armazenamento

A tabela a seguir mostra a sintaxe de importação de substituição para cada uma das funções de namespace herdadas:

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

Use funções exportadas em vez de métodos no aplicativo

Na API legada, o objeto App expôs vários métodos como app.auth() e app.database() . Recomendamos que os desenvolvedores evitem usar esses métodos e, em vez disso, usem os mesmos pontos de entrada de módulo descritos acima para obter instâncias de serviço com escopo para um determinado objeto de App e executar outras tarefas específicas do aplicativo.

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

Suporte a módulos ES

Node.js 12 e superior vêm com suporte experimental para módulos ES, permitindo que mesmo desenvolvedores não-TypeScript usem as palavras-chave de export e import em seu código. A partir da versão v10, o SDK Admin Node.js também oferece suporte a módulos ES, para que os desenvolvedores que implementam módulos ES em Node.js simples possam importar o SDK usando a sintaxe de import .

Para usar os módulos ES com o SDK Admin, primeiro certifique-se de ter ativado o suporte ESM para o tempo de execução do Node.js. Isso geralmente é feito adicionando um campo "type": "module" ao seu arquivo package.json . Então você pode escrever o código do aplicativo que se parece com isso:

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