Node.js
Node.js est un logiciel permettant d'exécuter du JavaScript côté serveur, contrairement à ce qu'on a l'habitude de voir avec le JavaScript côté client.
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. C'est de plus en plus souvent le cas avec le « nouveau » web qui arrive (html5/css3, etc.).
De plus, Node.js permet de créer des applications « serveur » facilement grâce à des applications tierces qu'il prend en charge via npm, son gestionnaire de dépendances.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
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 ne convient pas à l'installation de versions spécifiques, autres que la version précise proposée nativement avec chaque version particulière d'Ubuntu.
Il existe donc plusieurs autres méthodes d'installation, et en particulier des gestionnaires de paquets qui permettent l'installation voire même l'usage de plusieurs versions de Node.js simultanément :
- nvm (Node Version Manager)
Depuis les dépôts officiels
la dernière version LTS en maintenance étant la v18 et la version active la v20 1) !
Installer Node.js sous ubuntu est simple, il suffit d'installer les paquets nodejs npm. Vous préfèrerez probablement installer la version que met à disposition l'équipe de Node.js.
Résumé en ligne de commande
Le résumé, à saisir dans un terminal, utilise ici la commande apt :
sudo apt update sudo apt install nodejs npm
sudo ln -s /usr/bin/nodejs /usr/local/bin/node sudo ln -s /usr/bin/npm /usr/local/bin/npm
sudo apt install nodejs-legacy
Si vous souhaitez compiler des projets avec Node.js il vous faudra installer 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 Node.js, eux-mêmes écrits dans un autre langage (par exemple en C/C++).
Depuis un Personal Package Archives (PPA) (dépôts officiels "nodesource")
Chris Lea et NodeSource se sont associés pour maintenir un nouveau PPA avec des versions stables plus récentes de Node.js
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 20.x (LTS : active jusqu'en oct. 2024, support jusqu'à fin avril 2026) :
C'est la version recommandée pour vos applications en production.
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\ sudo apt-get install -y nodejs
Pour installer Node.js 21.x :
curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash - &&sudo apt-get install -y nodejs
Au moyen du gestionnaire de versions nvm
nvm (Node Version Manager), permet de gérer et utiliser très facilement différentes versions de npm et node.
nvm rend disponible les paquets installés globalement sous une version spécifique de Node.js/npm exclusivement sous cette version, séparés des autres versions de Node.js/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 n est plus souple et moins contraignant, mais éventuellement aussi moins fiable (tout est disponible partout).
Si besoin, installer tout d'abord curl :
sudo apt install curl
puis nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Pour pouvoir utiliser immédiatement la commande nvm
:
source ~/.bashrc
nvm est installé !
Pour lister les versions disponibles :
nvm ls
Pour utiliser la version v16.20.2
en particulier de Node.js :
nvm use 16
Au moyen du gestionnaire de versions n
n, une fois installé, permet l'installation simplifié des différentes versions de node. Si besoin, installer tout d'abord curl :
sudo apt install curl
puis n:
sudo curl -o /usr/local/bin/n https://raw.githubusercontent.com/visionmedia/n/master/bin/n
Puis affecter les droits à n:
sudo chmod +x /usr/local/bin/n
et enfin, installer node
sudo n stable
Utilisation basique
Voici un exemple d'application javascript que pourrait exécuter Node.js:
- app.js
setTimeout(function() { console.log('Coucou'); // écrit un message dans la console au bout de deux secondes }, 2000); console.log('toi'); // écrit un message dans la console
Pour exécuter cette application, il vous suffit de saisir dans un terminal la commande suivante:
node app.js
Sur Ubuntu 13.04 la commande de lancement est :
nodejs app.js
Bien entendu une telle application n'a aucun intérêt, c'est juste pour vous montrer de façon rapide comment cela fonctionne.
L'idée serait plutôt de créer une application serveur dont voici un exemple :
- app.js
var http = require('http'); var port = 8080; http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('Salut tout le monde !'); res.end(); }).listen(port); console.log("Serveur tourne sur http://localhost:"+port);
Pour comprendre ce code vous devriez jeter un coup d'oeil à la documentation officielle.
Bien entendu Node.js n'a pas uniquement vocation à créer des petits serveurs comme celui-ci. Mais pour aller plus loin il va falloir utiliser des modules.
Ajout de modules
Ajouter un module à Node.js est extrêmement simple. Depuis un terminal tapez la ligne suivante :
npm install express
Express.js est un module qui vous évitera de réécrire le code pour un serveur http à chaque application.
N'hésitez pas à aller voir sa documentation.
De la même façon vous pourrez installer beaucoup d'autres modules, à vous de les trouver.
Désinstallation
Pour supprimer cette application, il suffit de 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.