À propos de ce cours
Objectifs de la leçon
- Installer la CLI Nest.
- Créer et lancer un premier projet NestJS.
- Résoudre les erreurs d'installation les plus fréquentes.
- Publier le projet sur GitHub dès le départ.
Les quatre étapes, de Node.js au premier « Hello World! ».
Étape 1 : vérifier les prérequis
node -v # version LTS récente (20 ou plus)
npm -v
git --version
Si une commande n'est pas reconnue, reprenez la leçon 2.1 (Node.js) ou installez Git depuis git-scm.com.
Étape 2 : installer la CLI Nest
La CLI Nest (Command Line Interface) est l'outil qui crée les projets et génère le code. On l'installe globalement pour pouvoir utiliser la commande nest partout :
npm install -g @nestjs/cli
nest --version
Sous Linux ou macOS, si une erreur de permissions apparaît, utilisez nvm (leçon 2.1) plutôt que sudo.
Étape 3 : créer un projet
Placez-vous dans votre dossier de travail (par exemple Documents/nestjs) :
nest new api-stagiaires
La CLI demande le gestionnaire de paquets : choisissez npm avec les flèches puis Entrée. Elle crée le dossier, les fichiers de départ, installe les dépendances et initialise un dépôt Git. L'opération prend une à deux minutes.
api-stagiaires/
├── src/
│ ├── app.controller.ts ← contrôleur racine (route GET /)
│ ├── app.controller.spec.ts ← test unitaire du contrôleur
│ ├── app.module.ts ← module racine
│ ├── app.service.ts ← service racine
│ └── main.ts ← point d'entrée : démarre le serveur
├── test/ ← tests end-to-end
├── nest-cli.json ← configuration de la CLI
├── package.json
├── tsconfig.json ← configuration TypeScript
└── .gitignore
Options utiles: nest new api-stagiaires --package-manager npm évite la question ; --strict active le mode strict de TypeScript ; --skip-git ne crée pas de dépôt Git. Sans installation globale : npx @nestjs/cli new api-stagiaires.
Étape 4 : lancer l'application
cd api-stagiaires
npm run start:dev
Le mode start:dev compile le TypeScript et redémarre automatiquement à chaque enregistrement. Le terminal affiche les modules chargés et les routes détectées :
[Nest] LOG [NestFactory] Starting Nest application...
[Nest] LOG [InstanceLoader] AppModule dependencies initialized
[Nest] LOG [RoutesResolver] AppController {/}:
[Nest] LOG [RouterExplorer] Mapped {/, GET} route
[Nest] LOG [NestApplication] Nest application successfully started
Ouvrez http://localhost:3000 : la page affiche Hello World!. Ce texte vient de la méthode getHello() de app.service.ts, appelée par app.controller.ts.
Pour arrêter le serveur : Ctrl+C dans le terminal.
Erreurs fréquentes
| Message | Cause et solution |
|---|---|
nest : Impossible de charger le fichier … nest.ps1, car l'exécution de scripts est désactivée sur ce système | Politique de sécurité de PowerShell (Windows). Ouvrez PowerShell et exécutez :Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedou utilisez l'invite de commandes (cmd) ou Git Bash. |
'nest' n'est pas reconnu… / command not found | La CLI n'est pas installée ou le terminal a été ouvert avant l'installation : fermez et rouvrez-le, ou utilisez npx @nestjs/cli. |
EADDRINUSE: address already in use :::3000 | Le port 3000 est déjà utilisé (un autre serveur tourne). Arrêtez-le ou changez le port dans main.ts. |
EACCES: permission denied (Linux / macOS) | Installation globale sans droits : utilisez nvm. |
| Installation très longue ou erreurs réseau | Connexion ou proxy : relancez npm install dans le dossier du projet. |
Changer le port
// 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(process.env.PORT ?? 3000); // 3000 par défaut
}
bootstrap();
Publier le projet sur GitHub
Dès le premier jour, votre travail doit être sauvegardé et visible sur GitHub. Créez sur github.com/new un dépôt vide nommé api-stagiaires (sans README ni .gitignore), puis :
git add .
git commit -m "Création du projet NestJS"
git branch -M main
git remote add origin https://github.com/VOTRE-COMPTE/api-stagiaires.git
git push -u origin main
Si Git indique « nothing to commit », le premier commit a déjà été fait par la CLI : passez directement à git branch -M main. Vérifiez sur GitHub que le dossier node_modules n'apparaît pas: il est exclu par le fichier .gitignore généré.
Activités
Activité 1 Premier projet NestJS
- Installez la CLI et créez le projet
api-stagiaires. - Lancez-le en mode développement et ouvrez
http://localhost:3000. - Dans
app.service.ts, remplacez « Hello World! » par « Bienvenue sur l'API des stagiaires » et enregistrez. Que se passe-t-il dans le terminal et dans le navigateur (après actualisation) ? - Publiez le projet sur GitHub et collez l'adresse du dépôt dans votre compte rendu.
Voir le corrigé
À l'enregistrement, le terminal affiche une recompilation puis un redémarrage de l'application ; après actualisation, le navigateur affiche le nouveau message. Pensez à faire un commit : git commit -am "Message d'accueil personnalisé" puis git push.
Activité 2 Lancer sur un autre port
Démarrez l'application sur le port 4000 sans modifier le code. Indice : regardez la ligne app.listen.
Voir le corrigé
Le code lit la variable d'environnement PORT. Sous Linux / macOS / Git Bash : PORT=4000 npm run start:dev. Sous PowerShell : $env:PORT=4000; npm run start:dev. Sous cmd : set PORT=4000 && npm run start:dev.
À retenir
- La CLI s'installe avec npm install -g @nestjs/cli.
- nest new crée un projet complet, avec dépendances et dépôt Git.
- npm run start:dev lance l'API sur localhost:3000 avec rechargement automatique.
- Sous Windows, l'erreur PowerShell se corrige avec Set-ExecutionPolicy RemoteSigned.
- Le projet est publié sur GitHub dès sa création ; node_modules n'y figure jamais.