15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
09.10.2024

Comment installer et configurer Node.js et NPM sur Windows

Node.js est un environnement d’exécution JavaScript open-source et multiplateforme, construit sur le moteur V8 de Chrome, qui exécute du code JavaScript en dehors d’un navigateur. NPM (Node Package Manager) est le gestionnaire de paquets par défaut fourni avec Node.js, donnant accès à plus de deux millions de paquets réutilisables. Ensemble, ils constituent la chaîne d’outils fondamentale pour créer des applications côté serveur, des outils CLI, des REST APIs et des projets JavaScript full-stack sur Windows.

Ce guide couvre l’installation complète, la vérification, la configuration et le flux de travail pour une première application Node.js et NPM sur Windows — y compris la gestion des versions, le dépannage du PATH, la portée des paquets globaux vs. locaux, et les considérations de niveau production que la plupart des tutoriels omettent.

Choisir la bonne version de Node.js avant l’installation

Le calendrier de publication de Node.js suit une cadence prévisible qui affecte directement votre choix :

Type de versionStabilitéCas d’utilisationFenêtre de support
**LTS (Support à long terme)**ÉlevéeCharges de production, environnements d’équipe30 mois
**Current**ModéréeAccès aux dernières fonctionnalités du moteur V86 mois
**Nightly / RC**ExpérimentaleContributeurs principaux, tests en avant-premièreAucune garantie

Les versions LTS portent des numéros de version majeure pairs (par ex., 20.x, 22.x) et reçoivent des correctifs de sécurité critiques pendant 30 mois. Les versions Current portent des numéros de version majeure impairs et passent au statut LTS après six mois si elles répondent aux critères de stabilité.

Pour la plupart des développeurs et des déploiements serveur — y compris les applications hébergées sur un Hébergement VPS — LTS est le choix approprié. La branche Current n’est pertinente que lorsque vous avez spécifiquement besoin d’une fonctionnalité V8 ou d’une API Node.js qui n’est pas encore disponible dans la ligne LTS active.

NVM pour Windows : l’alternative professionnelle à l’installation directe

Avant de procéder avec l’installateur MSI, déterminez si vous avez besoin de nvm-for-windows (Node Version Manager pour Windows). L’installateur direct lie votre système à une seule version de Node.js. NVM vous permet d’installer plusieurs versions côte à côte et de basculer entre elles par projet — ce qui est essentiel lorsque vous maintenez des bases de code héritées en parallèle de bases modernes.

Installez nvm-for-windows depuis sa page officielle de versions GitHub, puis utilisez :

“`

nvm install 20.14.0

nvm use 20.14.0

nvm list

“`

Si vous gérez un seul projet ou apprenez Node.js pour la première fois, l’installateur MSI est suffisant. Pour les environnements professionnels, NVM est fortement recommandé.

Étape 1 : Télécharger l’installateur Node.js

  1. Accédez au site officiel de Node.js à l’adresse nodejs.org.
  2. Sélectionnez l’onglet LTS et téléchargez l’installateur Windows (`.msi`) pour votre architecture. Presque toutes les machines Windows modernes sont en 64 bits (`node-v20.x.x-x64.msi`). Des versions ARM64 sont disponibles pour les appareils Windows sur ARM.
  3. Vérifiez la somme de contrôle SHA-256 du fichier téléchargé par rapport aux valeurs publiées sur la page de téléchargements de Node.js avant d’exécuter l’installateur. Cette étape est non négociable dans tout environnement soucieux de la sécurité.

Pour vérifier la somme de contrôle dans PowerShell :

“`powershell

Get-FileHash .node-v20.14.0-x64.msi -Algorithm SHA256

“`

Comparez la sortie avec le hachage publié. Une discordance indique un téléchargement corrompu ou altéré.

Étape 2 : Installer Node.js et NPM

  1. Double-cliquez sur le fichier `.msi` téléchargé pour lancer l’assistant d’installation.
  2. Cliquez sur Suivant sur l’écran de bienvenue.
  3. Acceptez le contrat de licence utilisateur final et cliquez sur Suivant.
  4. Le chemin d’installation par défaut est `C:Program Filesnodejs`. Sauf si vous avez une raison spécifique de le modifier (par ex., un lecteur non système pour la gestion de l’espace disque), laissez-le tel quel.
  5. Sur l’écran Installation personnalisée, confirmez que le gestionnaire de paquets npm est sélectionné. Il est activé par défaut.
  6. Sur l’écran Outils pour les modules natifs, vous verrez une option pour installer automatiquement Chocolatey, Python et Visual Studio Build Tools. Cochez cette case si vous prévoyez d’installer des paquets NPM incluant des modules natifs C++ (par ex., `bcrypt`, `sharp`, paquets dépendants de `node-gyp`). Cette étape installe plusieurs gigaoctets d’outils — ignorez-la si vous n’avez besoin que de paquets JavaScript purs.
  7. Cliquez sur Installer, puis sur Terminer.

L’installateur enregistre automatiquement `node.exe` et `npm.cmd` dans la variable d’environnement système `PATH` sous `C:Program Filesnodejs`.

Ce que l’installateur fait réellement à votre système

Comprendre les effets secondaires permet d’éviter de futurs problèmes de débogage :

  • Ajoute `C:Program Filesnodejs` au PATH système (disponible pour tous les utilisateurs).
  • Crée `C:Users<username>AppDataRoamingnpm` comme préfixe de paquets global par défaut.
  • Enregistre Node.js dans le registre Windows sous `HKLMSOFTWARENode.js`.
  • Installe `npx` (le lanceur de paquets NPM) aux côtés de `npm`.

Étape 3 : Vérifier l’installation

Ouvrez une nouvelle fenêtre d’invite de commandes ou PowerShell. Le qualificatif « nouvelle » est important — les sessions de terminal existantes mettent en cache l’ancien PATH et ne refléteront pas les modifications de l’installateur.

“`

node -v

“`

Sortie attendue : `v20.14.0` (ou votre version installée)

“`

npm -v

“`

Sortie attendue : `10.x.x`

“`

npx -v

“`

Sortie attendue : correspond ou est proche de la version npm

Si `node` n’est pas reconnu, le PATH n’a pas été mis à jour correctement. Corrigez-le manuellement :

  1. Ouvrez Propriétés système > Avancé > Variables d’environnement.
  2. Sous Variables système, trouvez `Path` et cliquez sur Modifier.
  3. Ajoutez `C:Program Filesnodejs` s’il est absent.
  4. Cliquez sur OK, fermez toutes les fenêtres de terminal et rouvrez-les.

Diagnostic des problèmes courants après l’installation

Problème : `npm` est reconnu mais `node` ne l’est pas (ou vice versa).

Cause : Une entrée PATH partielle ou une installation conflictuelle provenant de Chocolatey ou d’une configuration NVM précédente.

Solution : Exécutez `where node` et `where npm` pour identifier quels binaires sont résolus. Supprimez les entrées obsolètes.

Problème : Erreurs de permission `EACCES` lors de l’exécution de `npm install -g`.

Cause : Le répertoire du préfixe global manque de permissions d’écriture pour l’utilisateur actuel.

Solution : Changez le préfixe global vers un répertoire appartenant à l’utilisateur (couvert à l’étape 5).

Problème : `node` ouvre le Microsoft Store au lieu d’exécuter Node.js.

Cause : Windows 10/11 est livré avec un alias d’exécution d’application pour `node` qui redirige vers le Store.

Solution : Allez dans Paramètres > Applications > Alias d’exécution d’application et désactivez les alias pour `python.exe` et `node.exe` (si présents).

Étape 4 : Mettre à jour NPM vers la dernière version

La version de NPM fournie avec un installateur Node.js est généralement une ou deux versions mineures en retard par rapport à la version actuelle. Mettez-la à jour immédiatement après l’installation :

“`

npm install -g npm@latest

“`

L’indicateur `-g` installe le paquet dans le répertoire du préfixe global, le rendant disponible à l’échelle du système. Après la mise à jour, vérifiez à nouveau :

“`

npm -v

“`

Cas limite important : Sur Windows, la mise à jour globale de NPM peut parfois laisser un `npm.cmd` obsolète dans `C:Program Filesnodejs` pointant vers l’ancienne version tandis que la nouvelle version est installée dans `C:Users<username>AppDataRoamingnpm`. Si `npm -v` affiche toujours l’ancienne version après la mise à jour, vérifiez quel binaire apparaît en premier dans le PATH :

“`

where npm

“`

Le chemin sous `AppDataRoamingnpm` doit apparaître avant `C:Program Filesnodejs` dans la sortie. Sinon, réorganisez les entrées PATH en conséquence.

Étape 5 : Configurer NPM pour votre environnement

La configuration de NPM est stockée dans un fichier `.npmrc`, qui peut exister à trois niveaux : par projet, par utilisateur (`C:Users<username>.npmrc`) et global (`C:Program Filesnodejsnode_modulesnpmnpmrc`). Les paramètres par projet remplacent les paramètres par utilisateur, qui remplacent les paramètres globaux.

Modifier le préfixe de paquets global

Le préfixe global par défaut (`AppDataRoamingnpm`) convient à la plupart des utilisateurs, mais sur des serveurs partagés ou lorsque des quotas de disque s’appliquent, vous pouvez vouloir le rediriger :

“`

npm config set prefix "D:NodeGlobal"

“`

Après avoir modifié le préfixe, ajoutez le nouveau sous-répertoire `bin` à votre PATH :

“`

setx PATH "%PATH%;D:NodeGlobal"

“`

Configurer un registre privé ou miroir

Les environnements d’entreprise et les serveurs isolés utilisent fréquemment un registre NPM privé (Verdaccio, Nexus, Artifactory) :

“`

npm config set registry "https://your-private-registry.example.com/"

“`

Pour s’authentifier auprès d’un registre privé :

“`

npm login –registry=https://your-private-registry.example.com/

“`

Pour les paquets à portée limitée uniquement (par ex., `@mycompany/*`), vous pouvez acheminer uniquement cette portée vers un registre privé tout en laissant le registre public intact :

“`

npm config set @mycompany:registry "https://your-private-registry.example.com/"

“`

Configurer un proxy HTTP

Si votre machine Windows se trouve derrière un proxy d’entreprise :

“`

npm config set proxy "http://proxy.company.com:8080"

npm config set https-proxy "http://proxy.company.com:8080"

“`

Auditer tous les paramètres actuels

“`

npm config list

npm config list –json

“`

L’indicateur `–json` produit une configuration lisible par machine, utile pour les scripts et les diagnostics de pipelines CI/CD.

Référence de configuration NPM utile

Clé de configurationValeur par défautObjectif
`prefix``%APPDATA%npm`Emplacement d’installation des paquets globaux
`registry``https://registry.npmjs.org/`Registre source des paquets
`cache``%APPDATA%npm-cache`Répertoire de cache des paquets locaux
`save-exact``false`Épingler les versions exactes dans `package.json`
`fund``true`Afficher les messages de financement après l’installation
`audit``true`Exécuter un audit de sécurité lors de l’installation

Étape 6 : Créer et exécuter une application Node.js

Initialiser le projet

“`

mkdir my-node-app

cd my-node-app

npm init -y

“`

`npm init -y` génère un `package.json` avec des valeurs par défaut dérivées du nom du répertoire et de votre configuration utilisateur NPM. Le fichier `package.json` est le manifeste de votre application — il définit le point d’entrée, les scripts, les dépendances et les métadonnées.

Créer un serveur HTTP de base

Créez `app.js` dans le répertoire du projet :

“`javascript

// app.js

const http = require('http');

const hostname = '127.0.0.1';

const port = 3000;

const server = http.createServer((req, res) => {

res.statusCode = 200;

res.setHeader('Content-Type', 'text/plain');

res.end('Hello, World!n');

});

server.listen(port, hostname, () => {

console.log(`Server running at http://${hostname}:${port}/`);

});

“`

Exécutez-le :

“`

node app.js

“`

Accédez à `http://127.0.0.1:3000/` dans votre navigateur. Vous devriez voir `Hello, World!`.

Note technique : Node.js utilise une boucle d’événements à thread unique soutenue par libuv pour les opérations d’E/S. Le rappel `http.createServer` se déclenche à chaque requête entrante sans bloquer la boucle. Cette architecture rend Node.js très efficace pour les charges de travail liées aux E/S, mais inadapté aux tâches intensives en CPU sans threads de travail ou processus enfants.

Ajouter le framework Express

Express est le framework HTTP standard de facto pour Node.js, fournissant le routage, la prise en charge des middlewares et une abstraction propre des requêtes/réponses :

“`

npm install express

“`

Cela installe Express localement (dans `node_modules/`) et l’enregistre comme dépendance dans `package.json`. Mettez à jour `app.js` :

“`javascript

const express = require('express');

const app = express();

const port = 3000;

app.get('/', (req, res) => {

res.send('Hello from Express!');

});

app.listen(port, () => {

console.log(`Server running at http://localhost:${port}`);

});

“`

“`

node app.js

“`

Visitez `http://localhost:3000/` pour confirmer la réponse.

Comprendre `node_modules` et `.gitignore`

Le répertoire `node_modules` peut contenir des centaines de mégaoctets de fichiers. Ne le commitez jamais dans le contrôle de version. Créez un fichier `.gitignore` :

“`

node_modules/

.env

“`

Les collaborateurs et les pipelines de déploiement restaurent les dépendances en exécutant `npm install`, qui lit `package.json` et `package-lock.json` pour reproduire l’arbre de dépendances exact.

Étape 7 : Gérer les paquets — local vs. global

Comprendre la distinction entre l’installation locale et globale des paquets est l’une des sources de confusion les plus courantes pour les nouveaux utilisateurs de Node.js.

PortéeCommande d’installationEmplacementCas d’utilisation
**Local**`npm install <pkg>``./node_modules/`Dépendances de l’application
**Local Dev**`npm install –save-dev <pkg>``./node_modules/`Outils de build, lanceurs de tests
**Global**`npm install -g <pkg>``%APPDATA%npm`Outils CLI (par ex., `nodemon`, `pm2`)

Règle clé : Si un paquet fournit un outil en ligne de commande que vous souhaitez disponible partout (par ex., `nodemon`, `eslint`, `typescript`), installez-le globalement. S’il s’agit d’une bibliothèque que votre application importe avec `require()` ou `import`, installez-la localement.

Exécuter des applications en production avec PM2

Pour toute application Node.js déployée sur un serveur — que ce soit sur une instance d’Hébergement VPS ou un Serveur Dédié — exécuter `node app.js` directement est insuffisant. Le processus se terminera si le terminal est fermé ou si une exception non gérée se produit.

PM2 est le gestionnaire de processus standard pour Node.js en production :

“`

npm install -g pm2

pm2 start app.js –name "my-app"

pm2 startup

pm2 save

“`

`pm2 startup` génère une commande pour configurer PM2 afin de redémarrer automatiquement votre application au redémarrage du système. `pm2 save` persiste la liste de processus actuelle.

Étape 8 : Renforcement de la sécurité et audit

Exécuter un audit des dépendances

“`

npm audit

“`

NPM croise vos paquets installés avec la base de données GitHub Advisory. Toutes les vulnérabilités connues sont signalées avec des niveaux de gravité (faible, modéré, élevé, critique) et des chemins de remédiation.

“`

npm audit fix

“`

Cela met automatiquement à niveau les paquets vulnérables vers la version corrigée la plus proche sans rupture. Pour les changements majeurs, examinez la sortie et effectuez la mise à niveau manuellement.

Épingler les versions des dépendances

Dans `package.json`, NPM utilise des plages de versionnage sémantique par défaut (`^1.2.3` autorise les mises à jour mineures et de correctifs). En production, épinglez les versions exactes pour éviter les surprises liées à la chaîne d’approvisionnement :

“`

npm config set save-exact true

“`

Ou remplacez manuellement les préfixes `^` par des chaînes de version exactes dans `package.json` et commitez le fichier `package-lock.json`.

Éviter d’exécuter NPM en tant qu’administrateur

Exécuter `npm install -g` avec des privilèges élevés écrit des fichiers appartenant au compte Administrateur, ce qui peut provoquer des erreurs de permission pour les opérations ultérieures sans élévation. Configurez un préfixe global appartenant à l’utilisateur (voir l’étape 5) pour éliminer entièrement le besoin de privilèges élevés.

Déployer des applications Node.js sur un serveur

Le développement local n’est que la première étape. Le déploiement en production introduit des exigences supplémentaires : gestion des processus, proxy inverse, terminaison TLS et gestion des variables d’environnement.

Une pile de production typique sur un Hébergement VPS Linux associe Node.js à Nginx comme proxy inverse. Nginx gère la terminaison TLS (en utilisant des certificats d’un fournisseur comme Certificats SSL) et transfère les requêtes au processus Node.js écoutant sur un port local.

Pour les équipes qui préfèrent un environnement de panneau de contrôle géré, VPS avec cPanel fournit la gestion des applications Node.js via l’interface cPanel, simplifiant le déploiement sans nécessiter de configuration SSH directe.

La configuration spécifique à l’environnement (identifiants de base de données, clés API, numéros de port) ne doit jamais être codée en dur. Utilisez un fichier `.env` avec le paquet `dotenv` :

“`

npm install dotenv

“`

“`javascript

require('dotenv').config();

const port = process.env.PORT || 3000;

“`

Matrice de décision : quand utiliser chaque méthode d’installation

ScénarioApproche recommandée
Projet unique, apprentissage de Node.jsInstallateur MSI, version LTS
Plusieurs projets avec différentes versions de Node.jsnvm-for-windows
Pipeline CI/CD sur Windows ServerInstallateur MSI ou Chocolatey (`choco install nodejs-lts`)
Serveur Linux de productionGestionnaire de paquets (apt/yum) ou nvm
Application conteneuriséeImage Docker officielle `node`
Environnement d’entreprise isoléMSI hors ligne + registre NPM privé (Verdaccio)

Points techniques clés à retenir

  • Installez toujours la version LTS pour les environnements de production et d’équipe. Utilisez la version Current uniquement lorsqu’une fonctionnalité V8 ou API Node.js spécifique est requise.
  • Utilisez nvm-for-windows dans tout environnement où plusieurs versions de Node.js doivent coexister.
  • Vérifiez la somme de contrôle SHA-256 de l’installateur avant l’exécution.
  • Changez le préfixe NPM global vers un répertoire appartenant à l’utilisateur pour éviter les erreurs de permission et éliminer le besoin de privilèges élevés.
  • Ne commitez jamais `node_modules/` dans le contrôle de version. Commitez toujours `package-lock.json`.
  • Exécutez `npm audit` après chaque `npm install` dans les pipelines de production.
  • Utilisez PM2 pour la gestion des processus sur tout déploiement serveur — n’exécutez jamais `node app.js` directement en production.
  • Terminez TLS au niveau de la couche proxy inverse (Nginx, Caddy) plutôt qu’à l’intérieur du processus Node.js pour de meilleures performances et une meilleure gestion des certificats.
  • Stockez les secrets dans des variables d’environnement chargées via `dotenv`, jamais dans le code source.

Foire aux questions

Quelle est la différence entre Node.js LTS et Current sur Windows ?

Les versions LTS reçoivent des correctifs de sécurité et de stabilité pendant 30 mois et portent des numéros de version majeure pairs (18, 20, 22). Les versions Current incluent les dernières fonctionnalités de langage et d’environnement d’exécution, mais ne sont supportées que pendant six mois avant de passer en LTS ou d’être abandonnées. Pour les déploiements Windows en production, utilisez toujours LTS.

Pourquoi `npm install -g` échoue-t-il avec une erreur de permission sur Windows ?

Le préfixe global par défaut (`C:Users<username>AppDataRoamingnpm`) manque parfois de permissions d’écriture en raison des politiques UAC ou d’installations précédentes exécutées en tant qu’Administrateur. La solution consiste soit à exécuter le terminal en tant qu’Administrateur (non recommandé à long terme), soit à reconfigurer le préfixe global vers un répertoire appartenant à votre compte utilisateur avec `npm config set prefix "C:yourpath"`.

Puis-je exécuter plusieurs versions de Node.js simultanément sur Windows ?

Oui, en utilisant nvm-for-windows. Installez-le, puis utilisez `nvm install <version>` et `nvm use <version>` pour basculer l’environnement d’exécution actif. Chaque version maintient son propre répertoire de paquets global, évitant les conflits entre versions.

Qu’est-ce que `package-lock.json` et dois-je le commiter ?

`package-lock.json` est un enregistrement exact et déterministe de l’arbre de dépendances complet résolu lors de `npm install`. Il garantit que chaque développeur et chaque exécution CI/CD installe des versions de paquets identiques. Commitez-le toujours dans le contrôle de version et ne le modifiez jamais manuellement.

Comment exécuter automatiquement une application Node.js au démarrage de Windows sans serveur ?

Pour les machines de développement, utilisez PM2 avec `pm2 startup` et `pm2 save`. Pour l’intégration avec les services Windows, des outils comme `node-windows` encapsulent un processus Node.js en tant que service Windows natif, permettant la gestion via le composant logiciel enfichable MMC Services et le redémarrage automatique en cas de défaillance ou de redémarrage.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer