Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nodejs [Le 15/09/2022, 20:12] – Correction des guillemets (détecté et corrigé via le bot wiki-corrector : https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-artnodejs [Le 08/04/2026, 16:20] (Version actuelle) – lien internes | fr | wpfr | github | détails krodelabestiole
Ligne 1: Ligne 1:
 {{tag>programmation serveur }} {{tag>programmation serveur }}
----- 
-====== Nodejs ====== 
-**Nodejs** est un logiciel permettant d'exécuter du [[wpfr>JavaScript]] côté serveur, contrairement à ce qu'on a l'habitude de voir avec le javascript côté client. 
  
-L'avantage d'utiliser **Nodejs** est que javascript permet l'exécution de tâches asynchrones, ce qui peut être pratique dans certaines situations. C'est de plus en plus souvent le cas avec le « nouveau » web qui arrive (html5/css3, etc.).\\ +====== Node.js ======
-De plus, **Nodejs** permet de créer des applications « serveur » facilement grâce à des applications tierces qu'il prend en charge via un logiciel similaire à un [[:gestionnaire de paquets]].+
  
-===== Pré-requis =====+**[[wpfr>Node.js]]** est un logiciel permettant d'exécuter du [[wpfr>JavaScript]] côté serveur, contrairement à ce qu'on a l'habitude de voir avec le JavaScript côté client (interprété par le [[:navigateur|navigateur Web]]). 
 + 
 +L'avantage d'utiliser **Node.js** est que JavaScript permet l'exécution de tâches asynchrones, ce qui peut être pratique dans certaines situations (en particulier pour les [[:web#applications Web]]).\\ 
 +**Node.js** permet de créer des applications //[[:serveur]]// facilement grâce à des bibliothèques qu'il prend en charge via **[[https://www.npmjs.com|npm]]**, son [[:gestionnaire de paquets|gestionnaire de dépendances]] et son dépôt éponyme. 
 + 
 +<note important> 
 +L'écosystème JavaScript est un milieu en constante et rapide évolution. Attention à l'actualité des informations que vous trouvez à ce sujet. À la rédaction de ce message, **[[https://pkg.com/|Yarn]]** se propose de remplacer **npm**, et **[[https://bun.sh|Bun]]** propose de remplacer à la fois **Node.js**, **npm** et **Yarn**. 
 +</note>
  
-  * Disposer des [[:sudo|droits d'administration]]. 
-  * Disposer d'une connexion à Internet configurée et activée. 
-     
 ===== Installation ===== ===== Installation =====
 +
 +Il existe de nombreuses manières d'installer **Node.js**. Ubuntu le propose dans ses [[:dépôts]] officiels et recommande évidemment cette méthode. Mais certaines applications JavaScript requièrent des versions spécifiques de **Node.js** et/ou de **npm**, et [[:APT]] (qu'il s'agisse de [[:PPA]] ou des [[:dépôts]] officiels d'Ubuntu) ne convient pas à l'utilisation de diverses versions spécifiques.
 +
 +Il existe donc plusieurs autres méthodes d'installation, et en particulier des gestionnaires de versions qui permettent l'installation voire même l'usage de plusieurs versions de **Node.js** simultanément :
 +  * **[[#au_moyen_du_gestionnaire_de_versions_nvm|nvm]]** (//Node Version Manager//)
 +  * **[[#au_moyen_du_gestionnaire_de_versions_n|n]]**
 +  * **[[https://docs.brew.sh/Homebrew-on-Linux|Homebrew]]**
 +
 +Il est aussi possible de profiter de l'environnement [[:Docker]] pour installer les versions de **Node.js**, **npm** ou **Yarn** de son choix, en les isolant du système. Dans ce cadre on préfère généralement déployer plus directement et simplement les images des applications qui reposent sur **Node.js** elles-mêmes.
  
 ==== Depuis les dépôts officiels ==== ==== Depuis les dépôts officiels ====
 +
 <note important> <note important>
-sous Focalcela installe la version LTS… 10.19 et sous Jammy la version 12.22.9 qui ne sont plus supportées \\ +Cette méthode n'est recommandée que si vous utilisez **Node.js** pour une application en particuliercompatible avec une version de **Node.js** parfois ancienneLes versions d'Ubuntu étant maintenues plus longtemps que certaines versions de **Node.js**, il arrive régulièrement que la version proposée dans les dépôts officielles soit déjà abandonnée. 
-la dernière version LTS en maintenance étant la v14 ((cfhttps://nodejs.org/fr/about/releases/)) !+ 
 +Si vous avez couramment besoin de **Node.js** ou souhaitez utiliser une version récente, utilisez de préférence un gestionnaire de version, tel que **[[#au_moyen_du_gestionnaire_de_versions_n|n]]** ou **[[#au_moyen_du_gestionnaire_de_versions_nvm|nvm]]**.
 </note> </note>
-Installer **Nodejs** sous ubuntu est simple, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer les paquets]] **[[apt>nodejs,npm|nodejs npm]]**. Vous préfèrerez probablement installer [[#depuis_un_personal_package_archives_ppa_depots_officiels_nodesource|la version que met à disposition l'équipe de NodeJS]]. 
  
-=== Résumé en ligne de commande=== +Installer **Node.js** sous Ubuntu est simple, il suffit d'[[:deb#installer_un_paquet_deb|installer les paquets]] ''[[apt>nodejs,npm|nodejs npm]]''. En revanche la version installée de cette manière peut être ancienne et même déjà abandonnée (voir ci-dessus).\\ 
-Le résuméà saisir dans un [[:terminal]], utilise ici la [[:commande_shell|commande]] **[[:apt-get]]** :+Soit, dans un [[:terminal]] avec la [[:commande_shell|commande]] ''[[:apt-cli|apt]]'' :
 <code> <code>
-sudo apt-get update +sudo apt update 
-sudo apt-get install nodejs npm+sudo apt install nodejs npm
 </code> </code>
  
-<note important>Il m'a fallu ajouter deux liens symboliques : +Si vous souhaitez [[:compilation|compiler]] des projets avec **Node.js** il vous faudra [[:deb#installer_un_paquet_deb|installer]] ''[[apt>nodejs-dev]]''. Notez que vous n'avez pas besoin de ce paquet pour développer des projets en [[wpfr>JavaScript]], il est utile en revanche si vous comptez développer des modules pour **Node.js**. 
-<code+ 
-sudo ln -s /usr/bin/nodejs /usr/local/bin/node +==== Depuis un PPA (dépôts "nodesource" ==== 
-sudo ln -s /usr/bin/npm /usr/local/bin/npm + 
-</code>+<note important> 
 +Cette méthode n'offre pas la souplesse ni la facilité d'utilisation d'un gestionnaire de version dédié, tel que **[[#au_moyen_du_gestionnaire_de_versions_n|n]]** ou **[[#au_moyen_du_gestionnaire_de_versions_nvm|nvm]]**. En outre elle peut complexifier et rendre imprévisibles les [[:upgrade|mises à jour majeures]] du système.
 </note> </note>
-<note important>Ou alors installer le paquet **[[apt>nodejs-legacy|nodejs-legacy]]**  qui installera les liens nécessaires à la compatibilité des conventions de nommage+ 
 +[[https://chrislea.com/2014/07/09/joining-forces-nodesource/|Chris Lea]] et [[https://nodesource.com/blog/chris-lea-joins-forces-with-nodesource|NodeSource]] se sont associés pour maintenir un [[:PPA]] avec des versions stables de **Node.js**, souvent plus récentes que celles des dépôts officiels. 
 + 
 +Chaque version de **Node.js** possède un script d'installation qui ajoute le dépôt correspondant au gestionnaire de paquet.\\ 
 +On les trouve ici : [[https://github.com/nodesource/distributions]] 
 + 
 +=== Pour installer Node.js 24.x (LTS active) === 
 + 
 +C'est la dernière version stable recommandée pour vos applications en production. 
 <code> <code>
-sudo apt install nodejs-legacy+curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - && sudo apt-get install -y nodejs
 </code> </code>
 +
 +<note tip>
 +Pour installer des paquets supplémentaires avec **npm**, vous aurez peut-être besoin d'installer ''[[apt>build-essential]]''.
 </note> </note>
  
-Si vous souhaitez [[:compilation|compiler]] des projets avec **Nodejs** il vous faudra [[:tutoriel:comment_installer_un_paquet|installer]] **[[apt>nodejs-dev]]**. Notez que vous n'avez pas besoin de ce paquet pour développer des projets en Javascript, il est utile en revanche si vous comptez développer des modules pour Nodejs, eux-mêmes écrits dans un autre langage (par exemple en C/C++).+==== Au moyen du gestionnaire de versions nvm ====
  
-==== Depuis un Personal Package Archives (PPA(dépôts officiels "nodesource" ====+**[[https://github.com/nvm-sh/nvm|nvm]]** (//Node Version Manager//), permet de gérer et utiliser très facilement différentes versions de //npm// et //node//.
  
-[[https://chrislea.com/2014/07/09/joining-forces-nodesource/|Chris Lea]] et [[https://nodesource.com/blog/chris-lea-joins-forces-with-nodesource|NodeSource]] se sont associés pour maintenir un nouveau PPA avec des versions stables plus récentes de Nodejs+**nvm** rend disponible les paquets installés globalement sous des versions spécifiques de **Node.js** et **npm** exclusivement sous ces versions, séparées des autres versions de **Node.js** et **npm**. On est sûr d'avoir chaque outil compatible avec sa version de **Node.js**, mais il faut réinstaller les outils dont on a besoin pour chaque nouvelle version.\\  
 +À ce titre le gestionnaire **[[#au_moyen_du_gestionnaire_de_versions_n|n]]** est plus souple et moins contraignant, mais éventuellement aussi moins fiable (tout est disponible partout).
  
-Chaque version de nodejs possède un script d'installation qui ajoute le dépôt correspondant au gestionnaire de paquet. +Si besoin, [[:deb#installer_un_paquet_deb|installer]] tout d'abord **[[wpfr>cURL]]** : 
-On les trouve ici : https://github.com/nodesource/distributions +<code>sudo apt install curl </code> 
- +puis **nvm**: 
-=== Pour installer nodejs 16.x (LTS : support jusqu'à octobre 2023) ===+<code>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash</code> 
 +<note important> 
 +Ce numéro de version est amené à changer, vérifier la commande exacte sur [[https://github.com/nvm-sh/nvm?tab=readme-ov-file#install--update-script|le dépôt nvm]] ou [[https://nodejs.org/fr/download|la page download de la doc officielle de node]]. 
 +</note> 
 +Pour pouvoir utiliser immédiatement la commande ''nvm'' : 
 +<code> 
 +source ~/.bashrc 
 +</code>
  
-C'est la version recommandée pour vos applications en production.+**nvm** est installé !
  
 +Pour lister les versions disponibles :
 <code> <code>
-wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - +nvm ls
-sudo apt install -y nodejs+
 </code> </code>
-  * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. 
  
-=== Pour installer nodejs 18.x et yarn ===+Pour utiliser la version ''v16.20.2'' en particulier de **Node.js** :
 <code> <code>
-curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - +nvm use 16
-curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null +
-echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +
-sudo apt-get update && sudo apt-get install -y nodejs yarn+
 </code> </code>
-  * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**. 
  
 +==== Au moyen du gestionnaire de versions n ====
  
-<note important>Pour installer des paquets supplémentaires avec npm, vous aurez peut être besoin d'installer **[[apt>build-essential]]**</note>+**[[https://github.com/tj/n|n]]**, une fois installé, permet l'installation simplifié des différentes versions de **Node.js**.
  
- +Si besoin, [[:deb#installer_un_paquet_deb|installer]] tout d'abord **[[wpfr>cURL]]** 
-==== Au moyen du gestionnaire de versions n ==== +<code>sudo apt install curl </code> 
-**n**cf. [[https://github.com/tj/n]], une fois installé, permet l'installation simplifié des différentes versions de //node//. +puis **n** :
-Si besoin, installer tout d'abord //curl// +
-<code>sudo apt-get install curl </code> +
-puis **n**:+
 <code>sudo curl -o /usr/local/bin/n https://raw.githubusercontent.com/visionmedia/n/master/bin/n</code> <code>sudo curl -o /usr/local/bin/n https://raw.githubusercontent.com/visionmedia/n/master/bin/n</code>
-Puis affecter les droits à n:+Puis affecter les [[:permissions]] en écriture à **n** :
 <code>sudo chmod +x /usr/local/bin/n</code> <code>sudo chmod +x /usr/local/bin/n</code>
-et enfin, installer //node//+et enfin, installer **Node.js** :
 <code> <code>
 sudo n stable sudo n stable
 </code> </code>
  
 +===== Utilisation basique =====
  
- +Voici un exemple d'application JavaScript que pourrait exécuter **Node.js** :
- +
- +
-===== Utilisation basique ===== +
-Voici un exemple d'application javascript que pourrait exécuter **Nodejs**:+
 <file javascript app.js> <file javascript app.js>
 setTimeout(function() { setTimeout(function() {
Ligne 97: Ligne 118:
 console.log('toi'); // écrit un message dans la console console.log('toi'); // écrit un message dans la console
 </file> </file>
-Pour exécuter cette application, il vous suffit de saisir dans un [[:terminal]] la [[:commande_shell|commande]] suivante:+Pour exécuter cette application, il vous suffit de saisir dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
 <code>node app.js</code> <code>node app.js</code>
-Sur Ubuntu 13.04 la commande de lancement est : 
-<code>nodejs app.js</code> 
  
-Bien entendu une telle application n'a aucun intérêt, c'est juste pour vous montrer de façon rapide comment cela fonctionne.\\ +Bien entendu une telle application n'a aucun intérêt, il s'agit juste montrer rapidement comment cela fonctionne.\\ 
-L'idée serait plutôt de créer une application serveur dont voici un exemple :+L'idée serait plutôt de monter un [[:web#serveurs|serveur Web]] dont voici un exemple :
 <file javascript app.js> <file javascript app.js>
 var http = require('http'); var http = require('http');
Ligne 114: Ligne 133:
 console.log("Serveur tourne sur http://localhost:"+port); console.log("Serveur tourne sur http://localhost:"+port);
 </file> </file>
-Pour comprendre ce code vous devriez jeter un coup d'oeil à la [[https://nodejs.org/docs/latest/api/index.html|documentation officielle]].+Pour comprendre ce code vous devriez jeter un coup d'œil à la [[https://nodejs.org/docs/latest/api/index.html|documentation officielle]].
  
-Bien entendu **Nodejs** n'a pas uniquement vocation à créer des petits serveurs comme celui-ci. Mais pour aller plus loin il va falloir utiliser des [[# Ajout de modules|modules]].+Bien entendu **Node.js** n'a pas uniquement vocation à créer de petits serveurs comme celui-ci. Mais pour aller plus loin il va falloir utiliser des [[#Ajout de modules|modules]].
  
 ===== Ajout de modules ===== ===== Ajout de modules =====
-Ajouter un module à **Nodejs** est extrêmement simple. Depuis un [[:terminal]] tapez la ligne suivante :+ 
 +Ajouter un module à **Node.js** est extrêmement simple. Depuis un [[:terminal]] entrez la commande suivante :
 <code>npm install express</code> <code>npm install express</code>
-//Express.js// est un module qui vous évitera de réécrire le code pour un [[wpfr>Serveur_HTTP|serveur http]] à chaque application.\\ N'hésitez pas à aller voir sa documentation.+**Express.js** est un module qui vous évitera de réécrire le code pour un [[wpfr>serveur HTTP]] à chaque application.\\ N'hésitez pas à consulter sa documentation.
  
-De la même façon vous pourrez installer beaucoup d'autres modules, à vous de les trouver.+De la même façon vous pourrez installer beaucoup d'autres modules, distribués sur [[https://www.npmjs.com|npmjs.com]].
  
 ===== Désinstallation ===== ===== Désinstallation =====
  
-Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, le configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés. +Pour supprimer cette application, il suffit de [[:deb#desinstaller_un_paquet_deb|supprimer son paquet]].
  
 ===== Voir aussi ===== ===== Voir aussi =====
-  * [[https://nodejs.org|site officiel nodejs.org]] (en) + 
-  * [[https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager|Installer nodejs sous linux]] (en) +  * [[https://nodejs.org/fr|site officiel]] de **Node.js** 
-  * [[https://nodejs.org/docs/latest/api/index.html|Documentation de nodejs]] (en) +  * [[https://github.com/nodejs/node|GitHub]] 
-  * [[https://github.com/nodejs/LTS#lts-schedule|la feuille de route (roadmap) des versions stables]] (en) +  * **(//en//)** //[[https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager|Installer Node.js sous linux]]// 
-  * [[https://www.hostinger.fr/tutoriels/comment-installer-node-js-sur-ubuntu|Tuto installation de NPM et nodjs par nvm]] (fr)+  * **(//en//)** [[https://nodejs.org/docs/latest/api/index.html|Documentation officielle]] de **Node.js** 
 +  * **(//en//)** [[https://github.com/nodejs/LTS#lts-schedule|la feuille de route (roadmap) des versions stables]] 
 +  * [[https://www.hostinger.fr/tutoriels/comment-installer-node-js-sur-ubuntu|Tutoriel]] pour l'installation de **npm** et **Node.js** par **nvm** 
 ---- ----
-//Contributeur principal : [[utilisateurs:nekdev]].//+//[[:Contributeurs]] : [[:utilisateurs:nekdev]], [[:utilisateurs:krodelabestiole]].//