22
0
Fork 0

Ajout section sur nodenv

This commit is contained in:
bwaegeneire 2021-08-12 18:05:30 +02:00
parent fd390195a0
commit b4352fb579
1 changed files with 67 additions and 0 deletions

View File

@ -203,6 +203,73 @@ location / {
}
~~~
## `nodenev`
`nodenv` est un outil permettant de faire coahbiter plusieurs versions de `node`
sur un même système, à la manière de `virtualenv` pour `python`. Entre autre,
cela permet à utilisateur d’utiliser une version de `node` différente que celle
installé globallement par le gestionaire de paquet.
<a id="org38d98b3"></a>
### Installation de `nodenv`
Version abbrégé des instructions du [README](https://github.com/nodenv/nodenv) pour une instllation manuelle :
$ git clone https://github.com/nodenv/nodenv.git ~/.nodenv
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile
$ ~/.nodenv/bin/nodenv init >> ~/.bash_profile
$ exit # Puis rouverez un login shell
L&rsquo;installation des versions de `node` n&rsquo;est pas gérée par nativement par
`nodenv`, on peut bien sur le faire manuellement mais c&rsquo;est plus commode
d&rsquo;utiliser `node-build` un plugin de `nodenv`. Ce plugin permet la commande
`nodenv install 10.13.0` qui va installer `node` en version `10.13.0`. Ce plugin
s&rsquo;installe avec les commandes suivantes :
$ mkdir -p "$(nodenv root)"/plugins
$ git clone https://github.com/nodenv/node-build.git "$(nodenv root)"/plugins/node-build
### Utilisation de `nodenv`
Après avoir installé `nodenv` et `node-build` vous pouvez installer autant de
version de `node` que vous souhaitez. Pour ce faire, avec un `/tmp` monté en
`noexec` on change le dossier temporaire à un emplacement où l&rsquo;execution est
autorisé (dans notre cas /home), on execute :
$ mkdir -p "$HOME/tmp"
$ TMPDIR="$HOME/tmp" nodenv install 14.16.1
La version de `node` que `nodenv` va activer est configuré par dossier en
fonction de la version contenue dans le fichier `.node-version`. Si on veux
activer la version de `node` pour le dossier courrant il faut executer `nodenv
local 14.16.1` qui va y créer le fichier `.node-version` contenant la version
voulue. On peut vérifier ça avec :
$ cat .node-version
14.16.1
$ node -v
v14.16.1
### Débogage
Si quelque chose se passe mal avec votre installation de `nodenv` vous pouvez
utiliser le plugin [`nodenv-doctor`](https://github.com/nodenv/nodenv-installer/blob/master/bin/nodenv-doctor) pour avoir une vue globale de son
installation :
$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
Checking for `nodenv' in PATH: /usr/local/bin/nodenv
Checking for nodenv shims in PATH: OK
Checking `nodenv install' support: /usr/local/bin/nodenv-install (node-build 3.0.22-4-g49c4cb9)
Counting installed Node versions: none
There aren't any Node versions installed under `~/.nodenv/versions'.
You can install Node versions like so: nodenv install 2.2.4
Auditing installed plugins: OK
## Websocket
Il est classique qu'une application Node.js utilise le protocole [Websocket](https://fr.wikipedia.org/wiki/WebSocket) qui permet d'ouvrir une sorte de connexion TCP au travers de HTTP pour avoir un canal de communication bidirectionnel et en temps réel avec le serveur. En fonction du module utilisé l'URL de connexion sera différente mais dans le cas du module _socket.io_ cela se fait en utilisant une requête HTTP GET vers une adresse du type _/socket.io/?xxxx_ avec les entêtes _Connection: Upgrade_ et _Upgrade: websocket_ qui va provoquer un code HTTP 101 (Switching Protocol) et l'ouverture d'une websocket.