Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECH] Spécifie la version minimale de node 16 sur l'API pour que cela fonctionne #6240

Merged
merged 1 commit into from
May 22, 2023

Conversation

francois2metz
Copy link
Contributor

🦄 Problème

Avec le passage aux modules ESM, nous avons besoin d'importer des modules json. Ceux ci sont disponible sans flag a partir de la version 16.15.

🤖 Proposition

Spécifier dans le package.json que la version 16.15 est la minimum compatible.

🌈 Remarques

Voir la PR qui enleve le flag:
nodejs/node#41736

💯 Pour tester

  1. Tester en 16.14 et voir que l'API ne démarre pas
  2. Tester en 16.15 et voir que l'API démarre

nodejs/node#41736

Co-authored-by: Mickaël Alibert <[email protected]>
Co-authored-by: Matthias Ferraina <[email protected]>
@francois2metz francois2metz self-assigned this May 22, 2023
@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

Copy link
Contributor

@mickaelalibert mickaelalibert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM ✨

@octo-topi
Copy link
Contributor

Test sur la v4.10.0

KO en 16.14

❯ nvm use 16.14.0
Now using node v16.14.0 (npm v8.3.1)
❯ npm start

> [email protected] start
> node index.js

node:internal/errors:464
    ErrorCaptureStackTrace(err);
    ^

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for /home/topi/Documents/OCTO/Missions/Pix/code/repo/pix/api/package.json
    at new NodeError (node:internal/errors:371:5)
    at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:87:11)
    at defaultGetFormat (node:internal/modules/esm/get_format:102:38)
    at defaultLoad (node:internal/modules/esm/load:21:14)
    at ESMLoader.load (node:internal/modules/esm/loader:359:26)
    at ESMLoader.moduleProvider (node:internal/modules/esm/loader:280:58)
    at new ModuleJob (node:internal/modules/esm/module_job:66:26)
    at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:297:17)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:261:34)
    at async ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:81:21) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}

OK en 16.15.0

❯ nvm use 16.15.0
Now using node v16.15.0 (npm v8.5.5)
❯ npm start

> [email protected] start
> node index.js

(node:27937) ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)

Note: cela ne supprime pas le message Importing JSON modules is an experimental feature. This feature could change at any time

@@ -6,7 +6,7 @@
"license": "AGPL-3.0",
"author": "GIP Pix",
"engines": {
"node": "16",
"node": ">=16.15 <18",
Copy link
Contributor

@octo-topi octo-topi Jun 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L'ADR de version de Node dit

En conséquence, nous spécifions le numéro de version majeure uniquement

Actuellement, on ne spécifie plus la version majeure, et en conséquence:

  • Scalingo utilise la 17 (pas une LTS)
  • la CI utilise la 16.20 (LTS)
  • et le développeur utilise celui qu'il veut > 16.15

Cela contredit l'ADR qui dit plus bas

A chaque nouvelle version majeure LTS de NodeJS éligible

Je propose donc pour faire simple

Suggested change
"node": ">=16.15 <18",
"node": "16",

En effet, la version 16.15.0 est disponible depuis le 27/04/2022
Si le développeur clone le repo aujourd'hui et qu'il utilise nvm, alors il aura au moins cette version.

Si vous objectez qu'il a peut-être déjà téléchargé la version 16.14.0 avant de cloner le repo, alors je suggère

Suggested change
"node": ">=16.15 <18",
"node": ">=16.15 <17",

Comme ça on garde la dernière release de la 16.

Note: La version LTS de node 16 ne sera plus maintenue à partir de septembre
Soit on utilise une non-LTS, soit on décide d'utiliser une version plus maintenue..

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L'option "node": ">=16.15 <17", me semble la plus porteuse d'informations et donc celle à privilégier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants