# Passage à NodeJS 20

**URL:** <https://community.gladysassistant.com/t/passage-a-nodejs-20/8691>\
**Category:** Développement\
**Created:** [Janvier 25, 2024, 11:11 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691 "2024-01-25T11:11:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [Janvier 25, 2024, 11:11 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/1 "2024-01-25T11:11:46Z")

</div>

Hello,

J’ai vu ce warning lors d’éxécution d’actions dans Github

`Node.js 16 actions are deprecated.`

Effectivement, NodeJS 16 est déprécié dans les actions et ils recommendent de passer à NodeJS LTS 20 ([GitHub Actions: Transitioning from Node 16 to Node 20 - The GitHub Blog](https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/))

> Our plan is to transition all actions to run on Node 20 by Spring 2024

Est-ce qu’on essaye de passer à NodeJS **20.11.0** (npm 10.2.4) ?

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [Janvier 25, 2024, 4:24 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/2 "2024-01-25T16:24:57Z")

</div>

En fait, on utilise Node 18, mais j’ai quand même fait une PR pour passer à la dernière version des actions Github

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 26, 2024, 8:09 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/3 "2024-01-26T08:09:26Z")

</div>

Carrément chaud pour passer à Node 20 pour Gladys + les Github actions 🙂

Merci pour les PRs, tiens moi au courant quand c’est ready for review !

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [Mars 12, 2024, 10:11 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/4 "2024-03-12T22:11:39Z")

</div>

Bon, pour Node 20, on a un «&nbsp;léger&nbsp;» blocage 🤔

Après 2 jours à me casser la tête sur des builds docker infinis, je suis tombé sur cette issue [NPM install stucks with node:20 · Issue #1946 · nodejs/docker-node · GitHub](https://github.com/nodejs/docker-node/issues/1946)

De ce que je comprends, on ne peut pas utiliser `npm` dans les images `node-20` pour les plateformes `linux/arm/v6, linux/arm/v7` et ça colle bien avec mon build infini.

Ces plateformes correspondent aux anciennes versions des RPI (1, Zero / Zero W/WH et 2 Mod. A). Est-ce qu’on maintient le build pour ces plateformes ?

Sinon, une image de test `cicoub13/gladys:node-20` est déployée sur mon RPI4 depuis quelques jours, rien à signaler.

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [Mars 13, 2024, 9:48 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/5 "2024-03-13T09:48:20Z")

</div>

Gladys - [Node 20 by cicoub13 · Pull Request #2039 · GladysAssistant/Gladys · GitHub](https://github.com/GladysAssistant/Gladys/pull/2039)  
Gladys Gateway **NON TESTÉ** - [chore(node): Update to node 20 by cicoub13 · Pull Request #159 · GladysAssistant/gladys-gateway · GitHub](https://github.com/GladysAssistant/gladys-gateway/pull/159)  
Documentation de Gladys - [docs: Update to node 20 by cicoub13 · Pull Request #256 · GladysAssistant/v4-website · GitHub](https://github.com/GladysAssistant/v4-website/pull/256)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mars 18, 2024, 8:23 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/6 "2024-03-18T08:23:50Z")

</div>

Merci pour les PR et tout le travail effectué @cicoub13 👏

> [@cicoub13](#):
>
> De ce que je comprends, on ne peut pas utiliser `npm` dans les images `node-20` pour les plateformes `linux/arm/v6, linux/arm/v7` et ça colle bien avec mon build infini.

 ![Screenshot 2024-03-18 at 09.22.58](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/f9604d05981c49b3e83eb1bec838ca38b8d7359f.png)

Apparemment ça a été fixé non ?

> [@cicoub13](#):
>
> Ces plateformes correspondent aux anciennes versions des RPI (1, Zero / Zero W/WH et 2 Mod. A). Est-ce qu’on maintient le build pour ces plateformes ?

Je suis plutôt pour attendre que l’image Node 20 soit stable et fonctionne sur ces plateformes 🙂

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [Mars 18, 2024, 8:52 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/7 "2024-03-18T08:52:14Z")

</div>

> [@pierre-gilles](#):
>
> Apparemment ça a été fixé non ?

Non, ce sont des gens d’autres projets open source qui enlèvent ARM v7 mais ce n’est toujours pas corrigé. On peut attendre un peu ⏳

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mars 18, 2024, 9:04 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/8 "2024-03-18T09:04:14Z")

</div>

Ok.

Tant que ça n’a pas d’impact pour les utilisateurs (ou le développement), autant rester en Node 18, car pour le coup retirer une plateforme ça aura un vrai impact.

Si à un moment on ressent le besoin de passer en Node 20, on re-évaluera

Tiens nous au courant si ça bouge sur les images 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 17, 2024, 3:15 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/9 "2024-05-17T15:15:24Z")

</div>

Pour info, le bug est toujours présent et affecte aussi Node 22 :

> <https://github.com/nodejs/docker-node/issues/2077>
>
> \<!--
> Thank you for reporting an issue with the Node.js image.
> 
> Please fill in… as much of the template below as you're able.
> \--\>
> 
> \## Environment
> 
> \* \*\*Platform\*\*: GitHub CI
> \* \*\*Docker Version\*\*: 24.0.9
> \* \*\*Node.js Version\*\*: 22
> \* \*\*Image Tag\*\*: node:22-alpine
> 
> \## Expected Behavior
> 
> No hanging build on armv6/armv7
> 
> \## Current Behavior
> 
> build is hanging on \`npm ci --omit=dev\`
> 
> \## Possible Solution
> 
> none
> 
> \## Steps to Reproduce
> 
> run docker deployment on github ci
> 
> 
> \## Additional Information
> Logs:
> https://productionresultssa4.blob.core.windows.net/actions-results/c81c7c78-0f17-4d1b-bb6e-eedc5023c285/workflow-job-run-e07742bd-189a-5079-918b-43f8b2f94b89/logs/job/job-logs.txt?rsct=text%2Fplain&se=2024-05-04T18%3A34%3A48Z&sig=kywF%2F31fsM6a0PFRA%2BGMwEYu9RkOcGzkAq1EUZumrx8%3D&sp=r&spr=https&sr=b&st=2024-05-04T18%3A24%3A43Z&sv=2021-12-02

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 29, 2024, 2:42 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/10 "2024-08-29T14:42:38Z")

</div>

Pour info, j’ai du dropper le support d’arm/v6 avec le passage à DuckDB, car tout simplement l’image Node.js ne le supporte plus dans sa version -slim basée sur Debian.

J’ai l’impression néanmoins que le problème avec Node 20 et arm/v7 est toujours présent…

Si ça continue, on sera contraint de dropper le support d’arm/v7, c’est peut-être un mal nécessaire car au final même les Pi 3 sont en arm64 il me semble, donc on ne perd pas des plateformes majeures non plus

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 14, 2024, 3:09 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/11 "2024-10-14T03:09:42Z")

</div>

Petite mise à jour sur ce sujet !

On va bientôt avoir 2 versions majeures de retard sur Node.js, car Node 22 var passer en LTS dans le courant du mois.

J’ai pris la décision de dropper le support de arm/v7, que de toute façon je ne recommande plus.

→ Les mini-PC que je recommandes sont en amd64  
 → Les Raspberry Pi depuis le Pi 3 sont en arm64

A mon sens, on ne perd pas des plateformes majeures et ça nous permet vraiment d’aller de l’avant.

**Cela va permettre 2 choses :**

- Passage à Node 22 dès que la LTS est disponible
- Accélérer les builds (On va passer de 4h à quelques minutes 😛 …)

La PR est ici :

> <https://github.com/GladysAssistant/Gladys/pull/2134>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fa…st as possible, make sure to review and check all of these items:
> 
> \- \[x\] If your changes affects code, did your write the tests?
> \- \[x\] Are tests passing? (\`npm test\` on both front/server)
> \- \[x\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[x\] Did you run prettier? (\`npm run prettier\` on both front/server)
> 
> \### Description of change
> 
> Remove arm/v7 builds. Needed for upgrading Node 20. It'll make build way faster in for production releases

Edit: Un build prend désormais 42 minutes au lieu de 4h10 😅

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [Octobre 17, 2024, 5:36 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/12 "2024-10-17T17:36:59Z")

</div>

Les 3 h restantes sont uniquement build la version armv7 ?!

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 18, 2024, 12:03 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/13 "2024-10-18T00:03:34Z")

</div>

C’est pire que ça, les builds sont lancés en parallèle donc le temps total c’est le temps du build le plus long, soit 4h10 pour le armv7 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 31, 2024, 9:23 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/14 "2024-10-31T09:23:29Z")

</div>

Node 22 est maintenant en LTS 🥳

J’ai essayé de mettre à jour localement, mais c’est pas aussi simple que ça 😅

Côté front, impossible de démarrer en Node 22:

```auto
63: 0x10226dc60 node::StartExecution(node::Environment*, char const*) [/Users/pierre-gillesleymarie/.volta/tools/image/node/22.11.0/bin/node]
64: 0x10226db80 node::StartExecution(node::Environment*, std::__1::function\u003cv8::MaybeLocal\u003cv8::Value\u003e (node::StartExecutionCallbackInfo const\u0026)\u003e) [/Users/pierre-gillesleymarie/.volta/tools/image/node/22.11.0/bin/node]
65: 0x1021d6460 node::LoadEnvironment(node::Environment*, std::__1::function\u003cv8::MaybeLocal\u003cv8::Value\u003e (node::StartExecutionCallbackInfo const\u0026)\u003e, std::__1::function\u003cvoid (node::Environment*, v8::Local\u003cv8::Value\u003e, v8::Local\u003cv8::Value\u003e)\u003e) [/Users/pierre-gillesleymarie/.volta/tools/image/node/22.11.0/bin/node]
66: 0x1022fdc98 node::NodeMainInstance::Run(node::ExitCode*, node::Environment*) [/Users/pierre-gillesleymarie/.volta/tools/image/node/22.11.0/bin/node]
67: 0x1022fda90 node::NodeMainInstance::Run() [/Users/pierre-gillesleymarie/.volta/tools/image/node/22.11.0/bin/node]
68: 0x10227159c node::Start(int, char**) [/Users/pierre-gillesleymarie/.volta/tools/image/node/22.11.0/bin/node]
69: 0x19d314274 start [/usr/lib/dyld]

----- JavaScript stack trace -----

1: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:34535
2: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:34176
3: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:34506
4: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:173374
5: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:173420
6: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:173521
7: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:258942
8: /Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:261569
9: e (/Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:262673)
10: get (/Users/pierre-gillesleymarie/code/gladys/front/node_modules/esm/esm.js:1:262740)

```

En cherchant un peu, le souci est aussi présent sous Node 20:

> <https://github.com/preactjs/preact-cli/issues/1822>
>
> \*\*What is the current behaviour?\*\*
> It seems that with the latest node LTS versi…on preact-cli does not work at all.
> I understand this is an abandoned project and that users are encouraged to move to something else, but any advice or pointers would still be greatly appreciated.
> 
> \*\*Steps to Reproduce\*\*
> Steps to reproduce the behavior:
> 
> 1. Run any preact-cli command on a node 20.10.0 environment
> 2. Get a fatal error from the node engine:
> \`\`\`
> $ node\_modules/.bin/preact --help
> 
> # node\[740\]: void node::fs::InternalModuleStat(const v8::FunctionCallbackInfo\<v8::Value\>&) at ../src/node\_file.cc:1037
> # Assertion failed: (args.Length()) \>= (2)
> 
> \----- Native stack trace -----
> 
> 
> \----- JavaScript stack trace -----
> 
> 1: .../node\_modules/esm/esm.js:1:34535
> 2: .../node\_modules/esm/esm.js:1:34176
> 3: .../node\_modules/esm/esm.js:1:34506
> 4: .../node\_modules/esm/esm.js:1:173374
> 5: ...node\_modules/esm/esm.js:1:173420
> 6: .../node\_modules/esm/esm.js:1:173521
> 7: .../node\_modules/esm/esm.js:1:258942
> 8: .../node\_modules/esm/esm.js:1:261569
> 9: e (.../node\_modules/esm/esm.js:1:262673)
> 10: get (.../node\_modules/esm/esm.js:1:262740)
> 
> 
> Aborted (core dumped)
> \`\`\`

Le souci, c’est que `preact-cli` n’est plus maintenu, il faut apparemment passer à `vite` :

 ![Screenshot 2024-10-31 at 10.22.56](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/2/b/2b8b5bc6a7f2c85d76505b8652ad6108effe0d45.png)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 14, 2025, 10:05 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/15 "2025-02-14T10:05:43Z")

</div>

Apparement, il y a une solution :

 ![Screenshot 2025-02-14 at 11.05.21](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/b/8/b82f9e4ff724cac12ea957fe474b1870ccd87017.png)

Source: [preact-cli errors out with node 20.10.0 (but not with 20.9.0) · Issue #1822 · preactjs/preact-cli · GitHub](https://github.com/preactjs/preact-cli/issues/1822#issuecomment-2604879361)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 14, 2025, 10:26 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/16 "2025-02-14T10:26:18Z")

</div>

Merci internet !! 😍

 ![Screenshot 2025-02-14 at 11.25.45](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/e/7/e739aea35be0b002d651e06ee1677d6d69daeda5.png)

Node 22 🚀

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 14, 2025, 2:21 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/17 "2025-02-14T14:21:46Z")

</div>

La PR :

> <https://github.com/GladysAssistant/Gladys/pull/2234>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fa…st as possible, make sure to review and check all of these items:
> 
> \- \[x\] If your changes affects code, did your write the tests?
> \- \[x\] Are tests passing? (\`npm test\` on both front/server)
> \- \[x\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[x\] Did you run prettier? (\`npm run prettier\` on both front/server)
> \- \[x\] If you are adding a new features/services, did you run integration comparator? (\`npm run compare-translations\` on front)
> \- \[x\] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to the community (\[french forum\](https://community.gladysassistant.com/)/\[english forum\](https://en-community.gladysassistant.com/)) for testing before merging.
> 
> \### Description of change
> 
> Upgrade to Node 22

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 17, 2025, 1:22 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/18 "2025-02-17T13:22:04Z")

</div>

Je viens de faire un test réel avec une image Docker de test, et c’est un succès !

[@contributors](https://community.gladysassistant.com/groups/contributors) Je viens de merger sur master, pensez à mettre à jour vos environnements 🙂

---

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Février 17, 2025, 5:55 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/19 "2025-02-17T17:55:43Z")

</div>

ouh ça c’est top, merci !! Je vais pouvoir ajouter des modules dans node-red qu’il n’était pas possible d’installer avec node18 😋

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Février 18, 2025, 7:40 UTC](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691/20 "2025-02-18T07:40:27Z")

</div>

@mutmut je crois que tu confonds 2 choses, ici je parle de Gladys, pas de Node-RED !

Pour Node-RED, on en parle ici :

> [@Upgrade node red avec nodejs 16.20.2 to 18.x ou 20.x](https://community.gladysassistant.com/t/upgrade-node-red-avec-nodejs-16-20-2-to-18-x-ou-20-x/9224/2):
>
> Salut @prohand, Je relance ce sujet, car effectivement ça serait bien de mettre à jour. Le souci, c’est que cette mise à jour est à mon avis breaking. Si jamais on force toutes les instances à mettre à jour Node-RED, ça risque de casser des installations non ? Et ça, je pense qu’on ne veut vraiment pas grimacing Est-ce que la solution ne serait pas d’ajouter un sélecteur de version de Node-RED dans l’interface de cette intégration ?

[Page suivante](https://community.gladysassistant.com/t/passage-a-nodejs-20/8691.md?page=2)
