Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🟢
Intermediaire 20 min NestJS

Deployer NestJS sur Firebase

Pourquoi Déployer NestJS sur Firebase ?

Déployer une application NestJS sur Firebase peut offrir plusieurs avantages. Dans un monde où les applications web et mobiles sont de plus en plus complexes, avoir une plateforme qui permet une déclaration rapide et facile d'infrastructure est précieux. Firebase fournit des outils robustes pour le déploiement, l'hébergement, et la gestion de données en temps réel. Pour un développeur, cela signifie pouvoir se concentrer davantage sur le développement du logiciel plutôt que sur la configuration technique.

Un cas d'usage concret est une application de gestion des tâches personnelles. Vous voulez permettre aux utilisateurs de créer, mettre à jour et supprimer leurs tâches à tout moment. Avec Firebase, vous pouvez facilement déployer cette application en quelques minutes, sans avoir besoin de gérer un serveur ou de configurer une base de données.

Prerequis

  • NestJS : Votre application NestJS doit être prête pour le déploiement. Assurez-vous qu'elle est bien testée et fonctionnelle.
  • Node.js (v14.x ou supérieur)
  • Firebase CLI (firebase-tools)
    npm install -g firebase-tools
    
  • NPM/Yarn : Pour installer les dépendances de votre projet NestJS

Concepts fondamentaux

1. Firebase Hosting

Firebase Hosting offre un hébergement web statique simple et rapide. Tous vos fichiers seront stockés dans le cloud, et ils seront accessibles via Internet.

// Dans firebase.json, configurez les routes pour votre application NestJS
{
  "hosting": {
    "public": ".",
    "ignore": [
      "**/.*",
      "**/.git"
    ],
    "rewrites": [{
        "source": "**",
        "destination": "/index.html"
      }]
  }
}

2. Firebase Functions

Firebase Functions vous permet de créer des fonctions déclenchées par diverses actions, comme les requêtes HTTP ou les événements de base de données.

// src/main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

3. Firebase Firestore

Firebase Firestore est une base de données NoSQL basée sur le document qui offre des fonctionnalités de base de données en temps réel.

// src/tasks/tasks.service.ts
import { Injectable } from '@nestjs/common';
import * as admin from 'firebase-admin';

@Injectable()
export class TasksService {
  constructor() {
    if (!admin.apps.length) {
      admin.initializeApp();
    }
    this.firestore = admin.firestore();
  }

  private firestore: FirebaseFirestore.Firestore;

  async create(task: any): Promise<any> {
    const taskRef = this.firestore.collection('tasks').doc();
    await taskRef.set(task);
    return { id: taskRef.id, ...task };
  }

  async findAll(): Promise<any[]> {
    const querySnapshot = await this.firestore.collection('tasks').get();
    return querySnapshot.docs.map(doc => doc.data());
  }
}

Mise en pratique : projet fil rouge

Étape 1 : Créer un nouveau projet Firebase

Connectez-vous à Firebase et créez un nouveau projet. Suivez les instructions pour activer Firestore.

Étape 2 : Initialiser le projet NestJS

Créer un nouveau projet NestJS et installez firebase-admin :

nest new task-manager
cd task-manager
npm install firebase-admin --save

Étape 3 : Configurer Firebase Hosting

Ajoutez les fichiers de configuration Firebase à votre projet :

firebase init hosting

Sélectionnez public et choisissez le répertoire racine de votre application NestJS.

Étape 4 : Créer un service pour Firestore

Créez un service pour gérer les tâches dans Firestore. Voici un exemple complet :

// src/tasks/tasks.service.ts
import { Injectable } from '@nestjs/common';
import * as admin from 'firebase-admin';

@Injectable()
export class TasksService {
  constructor() {
    if (!admin.apps.length) {
      admin.initializeApp();
    }
    this.firestore = admin.firestore();
  }

  private firestore: FirebaseFirestore.Firestore;

  async create(task: any): Promise<any> {
    const taskRef = this.firestore.collection('tasks').doc();
    await taskRef.set(task);
    return { id: taskRef.id, ...task };
  }

  async findAll(): Promise<any[]> {
    const querySnapshot = await this.firestore.collection('tasks').get();
    return querySnapshot.docs.map(doc => doc.data());
  }
}

Étape 5 : Configurer les routes pour Firebase Hosting

Dans firebase.json, configurez les routes pour votre application NestJS :

{
  "hosting": {
    "public": ".",
    "ignore": [
      "**/.*",
      "**/.git"
    ],
    "rewrites": [{
        "source": "**",
        "destination": "/index.html"
      }]
  }
}

Étape 6 : Déployer votre application

Déployez votre application sur Firebase Hosting :

firebase deploy

Erreurs fréquentes et debugging

1. Erreur : Error: Could not load firebase-admin module

code_incorrect = import * as admin from 'firebase-admin';

// ✅ Correct
import * as admin from 'firebase-admin';

2. Erreur : Error: Failed to initialize Firebase app

// ❌ Mauvais
if (!admin.apps.length) {
  admin.initializeApp();
}
// ✅ Correct
if (!admin.apps.length) {
  admin.initializeApp({
    credential: admin.credential.applicationDefault()
  });
}

3. Erreur : Error: No such file or directory: 'firebase.json'

// ❌ Mauvais
firebase init hosting
// ✅ Correct
firebase init
// Sélectionnez "Hosting" lors de la configuration

Pour aller plus loin

  1. Firebase Realtime Database : Découvrez comment utiliser Firebase Realtime Database pour stocker et synchroniser des données en temps réel.
  2. Cloud Functions for Firebase : Apprenez à créer et déployer des fonctions déclenchées par diverses actions sur Firebase.
  3. Authentication with Firebase Authentication : Intégrez Firebase Authentication pour gérer l'authentification de vos utilisateurs.

Défi pratique

Créez un CLI tool NestJS qui utilise Firebase Functions pour gérer une liste de contacts. Implémentez les fonctionnalités suivantes :

  • Ajouter un contact
  • Supprimer un contact
  • Mettre à jour un contact
  • Afficher tous les contacts

En utilisant ces concepts, vous serez en mesure d'approfondir votre compréhension de Firebase et de NestJS.

Besoin d'aide sur NestJS ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Comment configurer Firebase pour un nouveau projet?
Pour configurer Firebase, rendez-vous sur le site web de Firebase (https://firebase.google.com/), créez un compte si vous n'en avez pas déjà, puis initialisez un nouveau projet. Suivez les instructions pour ajouter Firebase à votre application NestJS.
Quelle est la meilleure façon d'authentifier les utilisateurs dans une application NestJS avec Firebase?
Pour l'authentification des utilisateurs, vous pouvez utiliser le package Firebase Admin SDK dans votre application NestJS. Cela vous permettra de gérer les authentifications et autorisations via Firebase Auth.
Comment déployer une application NestJS sur Firebase Functions?
Pour déployer une application NestJS sur Firebase Functions, vous devez d'abord configurer Firebase CLI. Ensuite, transformez votre application NestJS en un ensemble de fonctions Cloud Functions et utilisez les commandes Firebase pour les déployer.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.