{"id":68758,"date":"2023-05-02T15:39:32","date_gmt":"2023-05-02T14:39:32","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=68758&#038;preview=true&#038;preview_id=68758"},"modified":"2024-01-23T09:16:23","modified_gmt":"2024-01-23T08:16:23","slug":"node-js-20","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/","title":{"rendered":"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)"},"content":{"rendered":"<p>Node.js v20 est maintenant disponible ! Le 18 avril 2023, elle a \u00e9t\u00e9 rendue publique et peut d\u00e9sormais \u00eatre utilis\u00e9e par tous. Avec cette version, Node.js devrait \u00eatre beaucoup plus s\u00fbr et plus performant.<\/p>\n<p>Il est important de savoir que, comme il s&rsquo;agit d&rsquo;une version paire, il est pr\u00e9vu qu&rsquo;elle devienne une version de support \u00e0 long terme (LTS) en octobre 2023 et qu&rsquo;elle soit support\u00e9e jusqu&rsquo;en avril 2026. Cependant, l&rsquo;\u00e9quipe Node.js recherche activement les commentaires de la communaut\u00e9 afin d&rsquo;identifier et de corriger les \u00e9ventuels probl\u00e8mes avant qu&rsquo;elle ne soit promue en LTS.<\/p>\n<p>Cette nouvelle version de Node.js apporte des mises \u00e0 jour et des fonctionnalit\u00e9s passionnantes que les <a href=\"https:\/\/kinsta.com\/fr\/blog\/types-de-developpeurs\/\">d\u00e9veloppeurs<\/a> appr\u00e9cieront certainement, telles que le mod\u00e8le de permission exp\u00e9rimental, <code>import.meta.resolve<\/code> synchrone, un ex\u00e9cuteur de test stable, la mise \u00e0 jour du moteur JavaScript V8 \u00e0 la version 11.3, qui apporte des am\u00e9liorations de performance et des corrections de bogues, et bien d&rsquo;autres choses encore.<\/p>\n<p>Dans cet article, vous explorerez les changements introduits dans Node.js v20, en fournissant un aper\u00e7u approfondi de ses nouvelles fonctionnalit\u00e9s et capacit\u00e9s.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>D\u00e9marrer avec Node.js v20<\/h2>\n<p>L&rsquo;installation de Node.js v20 est assez similaire \u00e0 celle des autres versions de <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-node-js\/\">Node.js<\/a>. Tout ce que vous avez \u00e0 faire, c&rsquo;est :<\/p>\n<ol start=\"1\">\n<li>T\u00e9l\u00e9charger le paquet d&rsquo;installation depuis le <a href=\"https:\/\/nodejs.org\/en\/download\/current\" target=\"_blank\" rel=\"noopener noreferrer\">site officiel de Node.js<\/a>.<\/li>\n<li>Une fois que vous avez t\u00e9l\u00e9charg\u00e9 le programme d&rsquo;installation, ex\u00e9cutez-le et suivez les instructions pour terminer le processus d&rsquo;installation. Ce processus est assez simple, et il vous suffit d&rsquo;accepter le contrat de licence et de cliquer sur le bouton \u00ab Suivant \u00bb.<\/li>\n<li>Red\u00e9marrer votre syst\u00e8me\/machine une fois le processus d&rsquo;installation termin\u00e9 pour vous assurer que tous les changements sont pris en compte.<\/li>\n<li>V\u00e9rifier votre installation de Node.js en ex\u00e9cutant la commande suivante :<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">node -v<\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/04\/verify-node-v20-instalation.jpg\" alt=\"Installation de Node.js v20\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Installation de Node.js v20<\/figcaption><\/figure>\n<p>Si vous voyez le num\u00e9ro de version (v20.0.0), cela signifie que Node.js est install\u00e9 correctement et que vous \u00eates pr\u00eat \u00e0 commencer \u00e0 travailler avec Node.js v20.<\/p>\n\n<h2>Quelles sont les nouveaut\u00e9s de Node.js v20 ?<\/h2>\n<p>Examinons les 5 principales mises \u00e0 jour introduites dans cette version de Node.js. Ces fonctionnalit\u00e9s sont les suivantes :<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Mod\u00e8le de permission exp\u00e9rimental<\/h3>\n<p>L&rsquo;introduction du mod\u00e8le de permission exp\u00e9rimental dans Node.js v20 est un ajout significatif qui donne aux d\u00e9veloppeurs plus de contr\u00f4le sur l&rsquo;acc\u00e8s \u00e0 des ressources sp\u00e9cifiques pendant l&rsquo;ex\u00e9cution.<\/p>\n<p>Cette nouvelle fonctionnalit\u00e9 est utile lorsque la s\u00e9curit\u00e9 et l&rsquo;utilisation des ressources sont critiques, comme dans un environnement de production.<\/p>\n<p>Le mod\u00e8le de permission offre plusieurs possibilit\u00e9s, notamment celle de restreindre l&rsquo;acc\u00e8s au syst\u00e8me de fichiers, aux processus enfants, aux threads travailleurs et aux modules natifs.<\/p>\n<p>Les d\u00e9veloppeurs peuvent utiliser des drapeaux tels que <code>--allow-fs-read<\/code>, <code>--allow-fs-write<\/code>, et <code>--allow-child-process<\/code> pour sp\u00e9cifier quelles ressources sont accessibles. Pour activer ces drapeaux, les d\u00e9veloppeurs doivent utiliser le drapeau <code>--experimental-permission<\/code> en combinaison avec les autorisations n\u00e9cessaires.<\/p>\n<p>Voici un exemple d&rsquo;utilisation du mod\u00e8le de permissions pour autoriser l&rsquo;acc\u00e8s en lecture et en \u00e9criture \u00e0 l&rsquo;ensemble du syst\u00e8me de fichiers :<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-read=* --allow-fs-write=* index.js<\/code><\/pre>\n<p>Les d\u00e9veloppeurs peuvent \u00e9galement utiliser le mod\u00e8le de permissions pour sp\u00e9cifier l&rsquo;acc\u00e8s \u00e0 des dossiers et fichiers sp\u00e9cifiques. Par exemple, la commande suivante autorise l&rsquo;acc\u00e8s en \u00e9criture au dossier <strong>\/tmp\/<\/strong>:<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-write=\/tmp\/ --allow-fs-read=\/home\/index.js index.js<\/code><\/pre>\n<p>L&rsquo;un des principaux avantages du mod\u00e8le de permission est la possibilit\u00e9 d&rsquo;exercer un contr\u00f4le plus granulaire sur l&rsquo;acc\u00e8s au syst\u00e8me de fichiers. Par exemple, les d\u00e9veloppeurs peuvent sp\u00e9cifier des chemins d&rsquo;acc\u00e8s et des caract\u00e8res g\u00e9n\u00e9riques pour autoriser l&rsquo;acc\u00e8s \u00e0 des dossiers ou \u00e0 des fichiers sp\u00e9cifiques.<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-read=\/home\/user\/* index.js<\/code><\/pre>\n<p>La commande ci-dessus autorise l&rsquo;acc\u00e8s en lecture \u00e0 tous les dossiers du r\u00e9pertoire <strong>\/home\/user\/<\/strong>.<\/p>\n<p>La propri\u00e9t\u00e9 permission de l&rsquo;objet processus peut \u00e9galement \u00eatre utilis\u00e9e pour v\u00e9rifier si une permission sp\u00e9cifique a \u00e9t\u00e9 accord\u00e9e au moment de l&rsquo;ex\u00e9cution. Par exemple, si vous souhaitez v\u00e9rifier si votre processus Node.js a un acc\u00e8s en lecture \u00e0 un dossier sp\u00e9cifique, <strong>\/home\/user\/documents<\/strong>, vous pouvez utiliser le code suivant :<\/p>\n<pre><code class=\"language-js\">if (process.permission.has('fs.read', '\/home\/user\/documents')) {\n  console.log('Read access granted to \/home\/user\/documents');\n} else {\n  console.log('Read access not granted to \/home\/user\/documents');\n}<\/code><\/pre>\n<p>En utilisant le mod\u00e8le de permission, vous disposez d&rsquo;un contr\u00f4le plus fin sur l&rsquo;acc\u00e8s au syst\u00e8me de fichiers de vos processus Node.js, ce qui peut conduire \u00e0 une meilleure s\u00e9curit\u00e9 et \u00e0 une utilisation plus efficace des ressources.<\/p>\n<p>Il est essentiel de noter que le mod\u00e8le de permission est encore exp\u00e9rimental et qu&rsquo;il est susceptible d&rsquo;\u00eatre modifi\u00e9 dans les prochaines versions de Node.js. Il est conseill\u00e9 de rester \u00e0 jour avec la <a href=\"https:\/\/nodejs.org\/api\/permissions.html#process-based-permissions\" target=\"_blank\" rel=\"noopener noreferrer\">documentation du mod\u00e8le de permission<\/a> et de faire preuve de prudence lors de l&rsquo;utilisation de ces fonctionnalit\u00e9s exp\u00e9rimentales.<\/p>\n<h3>Test Runner stable<\/h3>\n<p>Node.js v20 inclut une version stable du module test_runner qui permet aux d\u00e9veloppeurs de construire et d&rsquo;ex\u00e9cuter des suites de tests <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> rapidement et facilement sans installer de d\u00e9pendances suppl\u00e9mentaires.<\/p>\n<p>Le gestionnaire de test stable comprend maintenant plusieurs blocs de construction, tels que <code>describe<\/code>, <code>it<\/code>\/<code>test<\/code>, et des crochets, pour la cr\u00e9ation et la structuration des fichiers de test, ainsi que le mocking, le mode watch, et la possibilit\u00e9 d&rsquo;ex\u00e9cuter plusieurs fichiers de test en parall\u00e8le \u00e0 l&rsquo;aide de la commande <code>node --test<\/code>.<\/p>\n<p>Voici un exemple d&rsquo;utilisation du moteur de test :<\/p>\n<pre><code class=\"language-js\">import { test, mock } from 'node:test';\nimport assert from 'node:assert';\nimport fs from 'node:fs';\n\nmock.method(fs, 'readFile', async () =&gt; \"Hello World\");\ntest('synchronous passing test', async (t) =&gt; {\n  \/\/ This test passes because it does not throw an exception.\n  assert.strictEqual(await fs.readFile('a.txt'), \"Hello World\");\n});<\/code><\/pre>\n<p>Le programme d&rsquo;ex\u00e9cution des tests offre des rapporteurs de tests configurables et personnalis\u00e9s via le drapeau <code>--test-reporter<\/code>, une couverture de test exp\u00e9rimentale via le drapeau <code>--experimental-test-coverage<\/code> et des capacit\u00e9s de mocking.<\/p>\n<p>Bien qu&rsquo;il ne soit pas destin\u00e9 \u00e0 remplacer les frameworks de test complets tels que <a href=\"https:\/\/jestjs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jest<\/a> ou <a href=\"https:\/\/mochajs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mocha<\/a>, le gestionnaire de test stable offre un moyen simple et rapide de cr\u00e9er des suites de tests. Il a \u00e9t\u00e9 am\u00e9lior\u00e9 de mani\u00e8re significative depuis son introduction dans Node.js v19, et gr\u00e2ce aux tests et aux retours des utilisateurs finaux, il a \u00e9t\u00e9 marqu\u00e9 comme stable dans Node.js v20.<\/p>\n<p>Vous trouverez plus d&rsquo;informations dans cette <a href=\"https:\/\/github.com\/nodejs\/node\/pull\/46983\" target=\"_blank\" rel=\"noopener noreferrer\">demande d&rsquo;extension fusionn\u00e9e<\/a>.<\/p>\n<h3>Mise \u00e0 jour du moteur JavaScript V8 vers la version 11.3<\/h3>\n<p>Le <a href=\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#use-the-v8-inspector\">moteur JavaScript V8<\/a>, qui alimente Node.js, a \u00e9t\u00e9 mis \u00e0 jour \u00e0 la version 11.3 dans Node.js v20. Cette mise \u00e0 jour permet d&rsquo;am\u00e9liorer les performances et d&rsquo;introduire de nouvelles fonctionnalit\u00e9s de langage. Voici quelques-unes des nouvelles fonctionnalit\u00e9s de cette mise \u00e0 jour :<\/p>\n<ul>\n<li><code>String.prototype.isWellFormed<\/code> et <code>toWellFormed<\/code>: Ces m\u00e9thodes sont particuli\u00e8rement utiles pour garantir un format de cha\u00eene correct. Elles permettent de s&rsquo;assurer que les cha\u00eenes saisies par l&rsquo;utilisateur sont au bon format UTF-16, ce qui r\u00e9duit les erreurs \u00e0 l&rsquo;\u00e8re des emojis.<\/li>\n<li>M\u00e9thodes qui modifient les tableaux et les tableaux typ\u00e9s par copie : Cette m\u00e9thode peut \u00eatre utile pour cr\u00e9er des copies modifi\u00e9es de tableaux sans affecter les donn\u00e9es d&rsquo;origine, ce qui est particuli\u00e8rement utile lorsque vous devez conserver les donn\u00e9es d&rsquo;origine \u00e0 des fins de comparaison ou autres.<\/li>\n<li>Resizable <code>ArrayBuffer<\/code> et growable <code>SharedArrayBuffer<\/code>: offre une plus grande flexibilit\u00e9, permettant une allocation de m\u00e9moire plus efficace.<\/li>\n<li>RegExp v flag with set notation and properties of strings : ajoute des fonctionnalit\u00e9s pour les expressions r\u00e9guli\u00e8res.<\/li>\n<li>WebAssembly tail call : permet d&rsquo;optimiser certains types d&rsquo;appels de fonction.<\/li>\n<\/ul>\n<p>Ces mises \u00e0 jour t\u00e9moignent de l&rsquo;engagement continu de la communaut\u00e9 des d\u00e9veloppeurs de Node.js en faveur de l&rsquo;am\u00e9lioration des performances et des fonctionnalit\u00e9s.<\/p>\n<h3>Import.meta.resolve() synchrone<\/h3>\n<p>Dans Node.js v20, <code>import.meta.resolve()<\/code> a \u00e9t\u00e9 introduit, ce qui facilite l&rsquo;\u00e9criture de scripts qui ne sont pas sensibles \u00e0 l&#8217;emplacement. Cette fonction renvoie de mani\u00e8re synchrone, comme dans les navigateurs, ce qui permet une ex\u00e9cution plus efficace.<\/p>\n<p>Les crochets de r\u00e9solution du chargeur d&rsquo;utilisateurs peuvent toujours \u00eatre d\u00e9finis comme une fonction asynchrone, mais <code>import.meta.resolve()<\/code> renverra toujours de mani\u00e8re synchrone pour le code de l&rsquo;application m\u00eame si des crochets de r\u00e9solution asynchrones sont charg\u00e9s.<\/p>\n<p>Le comportement synchrone de <code>import.meta.resolve()<\/code> permet une ex\u00e9cution plus efficace du code, en particulier lorsqu&rsquo;il s&rsquo;agit de traiter de grandes quantit\u00e9s de donn\u00e9es. En tant qu&rsquo;auteur, vous pouvez d\u00e9finir les crochets de r\u00e9solution comme des fonctions asynchrones ou synchrones, selon votre pr\u00e9f\u00e9rence. Le code de l&rsquo;application s&rsquo;ex\u00e9cutera toujours de mani\u00e8re synchrone, qu&rsquo;il y ait ou non des crochets de r\u00e9solution asynchrones charg\u00e9s.<\/p>\n<h3>Applications exp\u00e9rimentales \u00e0 ex\u00e9cutable unique (SEA)<\/h3>\n<p>Experimental Single Executable Applications (SEA) est une nouvelle fonctionnalit\u00e9 introduite dans Node.js v20 qui permet de regrouper votre application avec le binaire Node.js, permettant aux utilisateurs finaux de la distribuer et de l&rsquo;ex\u00e9cuter sous la forme d&rsquo;un seul fichier ex\u00e9cutable.<\/p>\n<p>Il s&rsquo;agit d&rsquo;une demande de longue date de la part de la communaut\u00e9, et l&rsquo;\u00e9quipe a affin\u00e9 l&rsquo;approche au cours de l&rsquo;ann\u00e9e \u00e9coul\u00e9e.<\/p>\n<p>Dans Node.js v20, la cr\u00e9ation d&rsquo;une application ex\u00e9cutable unique n\u00e9cessite l&rsquo;injection d&rsquo;un blob pr\u00e9par\u00e9 par Node.js \u00e0 partir d&rsquo;une configuration JSON plut\u00f4t que l&rsquo;injection du fichier JS brut.<\/p>\n<p>Un blob est un fichier qui contient des donn\u00e9es binaires, dans ce cas, pr\u00e9par\u00e9es par Node.js, et il est inject\u00e9 dans le binaire. Cette modification a \u00e9t\u00e9 apport\u00e9e pour permettre l&rsquo;int\u00e9gration de plusieurs ressources coexistantes dans la SEA, ce qui ouvre de nouveaux cas d&rsquo;utilisation.<\/p>\n<p>Voici un exemple de fichier <strong>sea-config.json<\/strong>:<\/p>\n<pre><code class=\"language-js\">{ \n      \"main\": \"myscript.js\", \n      \"output\": \"sea-prep.blob\" \n}<\/code><\/pre>\n<p>Lorsqu&rsquo;il est ex\u00e9cut\u00e9 avec la commande <code>node --experimental-sea-config sea-config.json<\/code>, le blob est \u00e9crit dans le fichier <strong>sea-prep.blob<\/strong>, qui peut ensuite \u00eatre inject\u00e9 dans le binaire.<\/p>\n<p>La fonctionnalit\u00e9 SEA permet aux d\u00e9veloppeurs de distribuer des <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">applications Node.js<\/a> sans que les utilisateurs aient besoin d&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-installer-node-js\/\">installer Node.js<\/a>. Cette fonctionnalit\u00e9 a \u00e9t\u00e9 cr\u00e9\u00e9e par <a href=\"https:\/\/github.com\/RaisinTen\">Darshan Sen<\/a>, qui a remport\u00e9 le prix Outstanding Contribution from a New Arrival dans le cadre des JavaScriptLandia Awards \u00e0 l&rsquo;OpenJS World.<\/p>\n<p>Microsoft, membre de la fondation OpenJS, \u00e9tudie cette fonctionnalit\u00e9 comme moyen de r\u00e9duire les attaques vectorielles et de renforcer l&rsquo;architecture Node.js pour une meilleure exp\u00e9rience. Bien que la fonction SEA soit encore exp\u00e9rimentale, elle repr\u00e9sente un nouveau d\u00e9veloppement passionnant pour la communaut\u00e9 Node.js.<\/p>\n<h3>Performances de Node.js<\/h3>\n<p>Node.js v20 est accompagn\u00e9 d&rsquo;am\u00e9liorations significatives de son runtime, avec un accent renouvel\u00e9 sur les performances par l&rsquo;\u00e9quipe de performance Node.js nouvellement form\u00e9e. Les am\u00e9liorations comprennent des optimisations des parties centrales du moteur d&rsquo;ex\u00e9cution, telles que URL, <code>fetch()<\/code>, et <code>EventTarget<\/code>.<\/p>\n<p>L&rsquo;une des am\u00e9liorations notables est la r\u00e9duction du co\u00fbt d&rsquo;initialisation de <code>EventTarget<\/code>, qui a \u00e9t\u00e9 divis\u00e9 par deux, ce qui permet un acc\u00e8s plus rapide \u00e0 tous les sous-syst\u00e8mes qui l&rsquo;utilisent. En outre, les appels V8 Fast API ont \u00e9t\u00e9 utilis\u00e9s pour am\u00e9liorer les performances d&rsquo;API telles que <code>URL.canParse()<\/code> et les temporisateurs.<\/p>\n<p>Un autre changement sp\u00e9cifique est l&rsquo;inclusion de la version 2.0 mise \u00e0 jour d&rsquo;Ada, un analyseur d&rsquo;URL rapide et conforme aux sp\u00e9cifications, \u00e9crit en C++.<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Dans cet article, vous avez d\u00e9couvert quelques-unes des principales fonctionnalit\u00e9s (exp\u00e9rimentales et stables) et am\u00e9liorations apport\u00e9es par Node.js v20, telles que les am\u00e9liorations du moteur JavaScript V8, les performances, le gestionnaire de tests et l&rsquo;introduction d&rsquo;un mod\u00e8le de permission exp\u00e9rimental, ainsi que les applications \u00e0 ex\u00e9cution unique.<\/p>\n<p>Il est important de savoir que Node.js v14 arrivera en fin de vie en avril 2023, il est donc conseill\u00e9 de commencer \u00e0 planifier la mise \u00e0 niveau vers Node.js v18 (LTS) ou vNode.js 20 (bient\u00f4t LTS).<\/p>\n<p>Vous souhaitez tester la derni\u00e8re version de Node.js ? Vous pouvez le faire en d\u00e9ployant votre <a href=\"https:\/\/sevalla.com\/application-hosting\/\">application Node.js sur Kinsta<\/a> et en obtenant vos premiers 20 $ chez nous. Nous supportons d\u00e9j\u00e0 Node.js v20, ce qui signifie que vous pouvez tester ses nouvelles fonctionnalit\u00e9s et capacit\u00e9s d\u00e8s aujourd&rsquo;hui.<\/p>\n<p><em>\u00c0 vous de jouer ! Quelles sont les fonctionnalit\u00e9s ou les am\u00e9liorations que vous trouvez les plus int\u00e9ressantes dans Node.js v20 ? Y en a-t-il d&rsquo;importantes que nous n&rsquo;avons pas remarqu\u00e9es ? Faites-nous en part dans les commentaires.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js v20 est maintenant disponible ! Le 18 avril 2023, elle a \u00e9t\u00e9 rendue publique et peut d\u00e9sormais \u00eatre utilis\u00e9e par tous. Avec cette version, Node.js &#8230;<\/p>\n","protected":false},"author":287,"featured_media":68759,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[994],"class_list":["post-68758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-node-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3) - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)\" \/>\n<meta property=\"og:description\" content=\"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-02T14:39:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T08:16:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"6084\" \/>\n\t<meta property=\"og:image:height\" content=\"3042\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)\",\"datePublished\":\"2023-05-02T14:39:32+00:00\",\"dateModified\":\"2024-01-23T08:16:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\"},\"wordCount\":2179,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\",\"name\":\"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3) - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg\",\"datePublished\":\"2023-05-02T14:39:32+00:00\",\"dateModified\":\"2024-01-23T08:16:23+00:00\",\"description\":\"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3) - Kinsta\u00ae","description":"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/","og_locale":"fr_FR","og_type":"article","og_title":"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)","og_description":"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.","og_url":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-05-02T14:39:32+00:00","article_modified_time":"2024-01-23T08:16:23+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Joel Olawanle","Dur\u00e9e de lecture estim\u00e9e":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)","datePublished":"2023-05-02T14:39:32+00:00","dateModified":"2024-01-23T08:16:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/"},"wordCount":2179,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/","url":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/","name":"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3) - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg","datePublished":"2023-05-02T14:39:32+00:00","dateModified":"2024-01-23T08:16:23+00:00","description":"La version 20 de Node.js est d\u00e9sormais disponible. D\u00e9couvrez les nouveaut\u00e9s de cette version, notamment Test Runner, Permission Model, SEA et V8 JS Engine 11.3.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/node-js-20\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/node-js-20.jpg","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/node-js-20\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Node.js","item":"https:\/\/kinsta.com\/fr\/sujets\/node-js\/"},{"@type":"ListItem","position":3,"name":"Nouveaut\u00e9s de Node.js v20 (Test Runner, Permission Model, SEA, V8 JS Engine 11.3)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=68758"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68758\/revisions"}],"predecessor-version":[{"id":68785,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68758\/revisions\/68785"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/translations\/dk"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68758\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/68759"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=68758"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=68758"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=68758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}