{"id":50442,"date":"2023-05-02T15:37:47","date_gmt":"2023-05-02T14:37:47","guid":{"rendered":"https:\/\/kinsta.com\/dk\/?p=50442&#038;preview=true&#038;preview_id=50442"},"modified":"2023-08-24T10:17:04","modified_gmt":"2023-08-24T09:17:04","slug":"node-js-20","status":"publish","type":"post","link":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/","title":{"rendered":"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)"},"content":{"rendered":"<p>Node.js v20 er nu tilg\u00e6ngelig! Den 18. april 2023 blev den gjort offentlig og kan nu bruges af alle. Med denne version skulle Node.js v\u00e6re meget mere sikker og yde bedre.<\/p>\n<p>Det er vigtigt at vide &#8211; da dette er en udgivelse med et lige nummer, er det planlagt at blive en LTS-version (Long Term Support) i oktober 2023 og vil blive underst\u00f8ttet indtil april 2026. Node.js-holdet s\u00f8ger dog aktivt efter feedback fra f\u00e6llesskabet for at identificere og rette eventuelle problemer, inden den bliver forfremmet til LTS.<\/p>\n<p>Denne nye version af Node.js indeholder sp\u00e6ndende opdateringer og funktioner, som <a href=\"https:\/\/kinsta.com\/dk\/blog\/typer-udviklere\/\">udviklere<\/a> helt sikkert vil s\u00e6tte pris p\u00e5, f.eks. den eksperimentelle Permission Model, synkron <code>import.meta.resolve<\/code>, en stabil test runner, opdateringer af V8 JavaScript-motoren til version 11.3, hvilket giver forbedringer af ydeevnen og fejlrettelser og meget mere.<\/p>\n<p>I denne artikel vil du udforske de \u00e6ndringer, der er indf\u00f8rt i Node.js v20, og du vil f\u00e5 et dybdeg\u00e5ende kig p\u00e5 de nye funktioner og muligheder.<\/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>Kom godt i gang med Node.js v20<\/h2>\n<p>Installationen af Node.js v20 ligner meget de andre versioner af <a href=\"https:\/\/kinsta.com\/blog\/what-is-node-js\/\">Node.js<\/a>. Det eneste, du skal g\u00f8re, er at:<\/p>\n<ol start=\"1\">\n<li>Hente installationspakken fra det <a href=\"https:\/\/nodejs.org\/en\/download\/current\" target=\"_blank\" rel=\"noopener noreferrer\">officielle Node.js-websted<\/a>.<\/li>\n<li>N\u00e5r du har hentet installationsprogrammet, skal du k\u00f8re det og f\u00f8lge instruktionerne for at fuldf\u00f8re installationsprocessen. Denne proces er ret ligetil, og du skal blot acceptere licensaftalen og klikke p\u00e5 &#8220;Next&#8221;-knappen.<\/li>\n<li>Genstart dit system\/din maskine, n\u00e5r installationsprocessen er afsluttet, for at sikre, at alle \u00e6ndringer tr\u00e6der i kraft.<\/li>\n<li>Kontroller din Node.js installation ved at k\u00f8re f\u00f8lgende kommando:<\/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=\"Node.js v20 Installation\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Node.js v20 Installation<\/figcaption><\/figure>\n<p>Hvis du ser versionsnummeret (v20.0.0.0), betyder det, at Node.js er installeret korrekt, og at du er klar til at begynde at arbejde med Node.js v20.<\/p>\n\n<h2>Hvad er nyt i Node.js v20?<\/h2>\n<p>Lad os unders\u00f8ge de 5 st\u00f8rre opdateringer, der er indf\u00f8rt med denne Node.js-udgave. Disse funktioner omfatter:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Eksperimentel tilladelsesmodel<\/h3>\n<p>Indf\u00f8relsen af den eksperimentelle tilladelsesmodel i Node.js v20 er en vigtig tilf\u00f8jelse, der giver udviklere mere kontrol over adgangen til specifikke ressourcer under udf\u00f8relsen.<\/p>\n<p>Denne nye funktion er fordelagtig, n\u00e5r sikkerhed og ressourceforbrug er kritiske, f.eks. i et produktionsmilj\u00f8.<\/p>\n<p>Tilladelsesmodellen kommer med flere muligheder, herunder begr\u00e6nsning af adgangen til filsystemet, child_process, worker_threads og native addons.<\/p>\n<p>Udviklere kan bruge flag som <code>--allow-fs-read<\/code>, <code>--allow-fs-write<\/code> og <code>--allow-child-process<\/code> til at angive, hvilke ressourcer der er tilg\u00e6ngelige. For at aktivere disse flag skal udviklere bruge flaget <code>--experimental-permission<\/code> i kombination med de n\u00f8dvendige tilladelser.<\/p>\n<p>Her er et eksempel p\u00e5, hvordan man bruger tilladelsesmodellen til at give l\u00e6se- og skriveadgang til hele filsystemet:<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-read=* --allow-fs-write=* index.js<\/code><\/pre>\n<p>Udviklere kan ogs\u00e5 bruge tilladelsesmodellen til at angive adgang til bestemte mapper og filer. F\u00f8lgende kommando giver f.eks. skriveadgang til mappen <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>En v\u00e6sentlig fordel ved tilladelsesmodellen er muligheden for at ud\u00f8ve mere detaljeret kontrol over adgangen til filsystemet. Udviklere kan f.eks. angive stier og wildcard-m\u00f8nstre for at tillade adgang til bestemte mapper eller filer.<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-read=\/home\/user\/* index.js<\/code><\/pre>\n<p>Ovenst\u00e5ende kommando giver l\u00e6seadgang til alle mapper i mappen <strong>\/home\/user\/<\/strong>.<\/p>\n<p>Procesobjektets permission-egenskab kan ogs\u00e5 bruges til at kontrollere, om der er givet en bestemt tilladelse p\u00e5 k\u00f8retid. Hvis du f.eks. \u00f8nsker at kontrollere, om din Node.js-proces har l\u00e6seadgang til en bestemt mappe, <strong>\/home\/user\/documents<\/strong>, kan du bruge f\u00f8lgende kode:<\/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>Ved at bruge tilladelsesmodellen har du en mere finkornet kontrol over dine Node.js-processers adgang til filsystemet, hvilket kan f\u00f8re til bedre sikkerhed og mere effektiv ressourceudnyttelse.<\/p>\n<p>Det er vigtigt at bem\u00e6rke, at Permission Model stadig er eksperimentel og kan \u00e6ndre sig i fremtidige udgaver af Node.js. Det er tilr\u00e5deligt at holde sig opdateret med <a href=\"https:\/\/nodejs.org\/api\/permissions.html#process-based-permissions\" target=\"_blank\" rel=\"noopener noreferrer\">Permission Model-dokumentationen<\/a> og udvise forsigtighed, n\u00e5r du bruger disse eksperimentelle funktioner.<\/p>\n<h3>Stabil testk\u00f8rer<\/h3>\n<p>Node.js v20 indeholder en stabil version af test_runner-modulet, som g\u00f8r det muligt for udviklere at opbygge og k\u00f8re <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a>-testsuiter hurtigt og nemt uden at installere yderligere afh\u00e6ngigheder.<\/p>\n<p>Den stabile test runner indeholder nu flere byggeblokke, s\u00e5som <code>describe<\/code>, <code>it<\/code>\/<code>test<\/code>, og hooks, til udarbejdelse og strukturering af testfiler, sammen med mocking, watch mode og muligheden for at k\u00f8re flere testfiler parallelt ved hj\u00e6lp af kommandoen <code>node --test<\/code>.<\/p>\n<p>Her er et eksempel p\u00e5, hvordan man bruger testk\u00f8reren:<\/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>Testk\u00f8reren tilbyder konfigurerbare og brugerdefinerede testrapportere via <code>--test-reporter<\/code> -flaget, eksperimentel testd\u00e6kning via <code>--experimental-test-coverage<\/code> -flaget og mocking-muligheder.<\/p>\n<p>Selvom det ikke er meningen at erstatte fuldt udbyggede testframeworks som <a href=\"https:\/\/jestjs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jest<\/a> eller <a href=\"https:\/\/mochajs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mocha<\/a>, tilbyder den stabile test runner en enkel og hurtig m\u00e5de at oprette testsuiter p\u00e5. Den er blevet forbedret betydeligt siden introduktionen i Node.js v19, og takket v\u00e6re slutbrugernes test og feedback er den nu blevet markeret som stabil i Node.js v20.<\/p>\n<p>Du kan finde flere oplysninger i denne <a href=\"https:\/\/github.com\/nodejs\/node\/pull\/46983\" target=\"_blank\" rel=\"noopener noreferrer\">sammenlagte pull request<\/a>.<\/p>\n<h3>V8 JavaScript Engine opdateret til 11.3<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/blog\/node-debug\/#use-the-v8-inspector\">V8 JavaScript-motoren<\/a>, som driver Node.js, er blevet opdateret til version 11.3 i Node.js v20. Dette giver forbedret ydeevne og introducerer nye sprogfunktioner. Nogle af de nye funktioner i denne opdatering omfatter:<\/p>\n<ul>\n<li><code>String.prototype.isWellFormed<\/code> og <code>toWellFormed<\/code>: Disse metoder er s\u00e6rligt nyttige til at sikre korrekt strengformat. Dette er med til at sikre, at brugerens strengindtastning er i det korrekte UTF-16-format, hvilket reducerer fejl i emojis-alderen.<\/li>\n<li>Metoder, der \u00e6ndrer Array og TypedArray ved kopiering: Dette kan v\u00e6re nyttigt til at oprette \u00e6ndrede kopier af arrays uden at p\u00e5virke de oprindelige data, hvilket is\u00e6r er relevant i tilf\u00e6lde, hvor du har brug for at bevare de oprindelige data til sammenligning eller andre form\u00e5l.<\/li>\n<li>Resizable <code>ArrayBuffer<\/code> og growable <code>SharedArrayBuffer<\/code>: giver st\u00f8rre fleksibilitet, hvilket giver mulighed for mere effektiv hukommelsesallokering.<\/li>\n<li>RegExp v-flag med s\u00e6tnotation og egenskaber for strenge: tilf\u00f8jer funktionalitet for regul\u00e6re udtryk.<\/li>\n<li>WebAssembly tail call: giver mulighed for at optimere visse typer af funktionskald.<\/li>\n<\/ul>\n<p>Disse opdateringer viser Node.js-udviklingsf\u00e6llesskabets l\u00f8bende engagement i at forbedre ydeevne og funktionalitet.<\/p>\n<h3>Synkron import.meta.resolve()<\/h3>\n<p>I Node.js v20 er <code>import.meta.resolve()<\/code> blevet indf\u00f8rt, hvilket g\u00f8r det lettere at skrive scripts, der ikke er stedf\u00f8lsomme. Denne funktion returnerer synkront, svarende til browserens adf\u00e6rd, hvilket giver mulighed for mere effektiv udf\u00f8relse.<\/p>\n<p>User loader resolve hooks kan stadig defineres som en asynkron funktion, men <code>import.meta.resolve()<\/code> vil stadig returnere synkront for applikationskoden, selv om asynkrone resolve hooks er indl\u00e6st.<\/p>\n<p>Den synkrone adf\u00e6rd i <code>import.meta.resolve()<\/code> giver mulighed for en mere effektiv udf\u00f8relse af kode, is\u00e6r n\u00e5r der er tale om store datam\u00e6ngder. Som forfatter kan du definere resolve hooks som enten asynkrone eller synkrone funktioner, alt efter hvad du foretr\u00e6kker. Programkoden vil stadig blive udf\u00f8rt synkront, uanset om der er indl\u00e6st asynkrone resolve hooks.<\/p>\n<h3>Eksperimentelle enkelt eksekverbare applikationer (SEA)<\/h3>\n<p>Eksperimentelle enkelt eksekverbare applikationer (SEA) er en ny funktion, der blev indf\u00f8rt i Node.js v20, som g\u00f8r det muligt at bundle din applikation med Node.js-bin\u00e6rfilen, s\u00e5 slutbrugerne kan distribuere og k\u00f8re den som en enkelt eksekverbar fil.<\/p>\n<p>Dette har l\u00e6nge v\u00e6ret et \u00f8nske fra f\u00e6llesskabet, og teamet har finpudset tilgangen i l\u00f8bet af det seneste \u00e5r.<\/p>\n<p>I Node.js v20 kr\u00e6ver opbygning af en enkelt eksekverbar app, at der injiceres en blob, som Node.js har forberedt fra en JSON-konfiguration, i stedet for at injicere den r\u00e5 JS-fil.<\/p>\n<p>En blob er en fil, der indeholder bin\u00e6re data, i dette tilf\u00e6lde forberedt af Node.js, og den injiceres i den bin\u00e6re fil. Denne \u00e6ndring blev foretaget for at muligg\u00f8re indlejring af flere sameksisterende ressourcer i SEA, hvilket \u00e5bner op for nye anvendelsesmuligheder.<\/p>\n<p>Her er et eksempel p\u00e5 en <strong>sea-config.json<\/strong>-fil:<\/p>\n<pre><code class=\"language-js\">{ \n      \"main\": \"myscript.js\", \n      \"output\": \"sea-prep.blob\" \n}<\/code><\/pre>\n<p>N\u00e5r den udf\u00f8res med kommandoen <code>node --experimental-sea-config sea-config.json<\/code>, skrives blob&#8217;en til filen <strong>sea-prep.blob<\/strong>, som derefter kan injiceres i den bin\u00e6re fil.<\/p>\n<p>SEA-funktionen g\u00f8r det muligt for udviklere at distribuere <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">Node.js-applikationer<\/a> uden at brugerne beh\u00f8ver at <a href=\"https:\/\/kinsta.com\/dk\/blog\/saadan-installeres-node-js\/\">installere Node.js<\/a>. Funktionen blev skabt af <a href=\"https:\/\/github.com\/RaisinTen\">Darshan Sen<\/a>, som vandt prisen Outstanding Contribution from a New Arrival Award som en del af JavaScriptLandia Awards ved OpenJS World.<\/p>\n<p>Microsoft, der er medlem af OpenJS Foundation, unders\u00f8ger denne funktion som en m\u00e5de at reducere vektorangreb p\u00e5 og styrke Node.js-arkitekturen for at give en bedre oplevelse. Selv om SEA-funktionen stadig er eksperimentel, er den en sp\u00e6ndende ny udvikling for Node.js-f\u00e6llesskabet.<\/p>\n<h3>Ydeevne<\/h3>\n<p>Node.js v20 kommer med betydelige forbedringer af k\u00f8rselstiden med fornyet fokus p\u00e5 ydeevne fra det nyoprettede Node.js performance team. Forbedringerne omfatter optimeringer af de centrale dele af k\u00f8retiden, f.eks. URL, <code>fetch()<\/code> og <code>EventTarget<\/code>.<\/p>\n<p>En af de bem\u00e6rkelsesv\u00e6rdige forbedringer er reduktionen af omkostningerne ved initialisering af <code>EventTarget<\/code>, som er blevet halveret, hvilket har resulteret i hurtigere adgang til alle undersystemer, der bruger det. Desuden er V8 Fast API-kald blevet anvendt til at forbedre ydeevnen i API&#8217;er som <code>URL.canParse()<\/code> og timere.<\/p>\n<p>En anden specifik \u00e6ndring er medtagelsen af den opdaterede version 2.0 af Ada, en hurtig og specifikationskompatibel URL-parser skrevet i C++.<\/p>\n\n<h2>Opsummering<\/h2>\n<p>I denne artikel har du l\u00e6rt nogle af de vigtigste funktioner (eksperimentelle og stabile) og forbedringer, som Node.js v20 bringer, s\u00e5som forbedringer af V8 JavaScript-motoren, ydeevne, testl\u00f8ber og introduktion af eksperimentel tilladelsesmodel og enkeltudf\u00f8relsesapplikationer.<\/p>\n<p>Det er vigtigt at vide, at Node.js v14 g\u00e5r End-of-Life i april 2023, s\u00e5 det anbefales at begynde at planl\u00e6gge en opgradering til Node.js v18 (LTS) eller vNode.js 20 (snart LTS).<\/p>\n<p>Har du lyst til at give den nyeste version af Node.js en tur? Det kan du g\u00f8re ved at implementere din <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Node.js applikation p\u00e5 Kinsta<\/a> og f\u00e5 dine f\u00f8rste 20 dollars hos os. Vi underst\u00f8tter allerede Node.js v20, hvilket betyder, at du kan teste de nye funktioner og muligheder fra i dag.<\/p>\n<p><em>Nu er det din tur! Hvilke funktioner eller forbedringer finder du mest interessante i Node.js v20? Er der nogle v\u00e6sentlige, som vi m\u00e5ske har overset? Lad os vide det i kommentarerne.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js v20 er nu tilg\u00e6ngelig! Den 18. april 2023 blev den gjort offentlig og kan nu bruges af alle. Med denne version skulle Node.js v\u00e6re meget &#8230;<\/p>\n","protected":false},"author":287,"featured_media":50443,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[720],"class_list":["post-50442","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>Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3) - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og 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\/dk\/blog\/node-js-20\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)\" \/>\n<meta property=\"og:description\" content=\"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og V8 JS Engine 11.3.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-02T14:37:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-24T09:17:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/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=\"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og V8 JS Engine 11.3.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_dk\" \/>\n<meta name=\"twitter:label1\" content=\"Skrevet af\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimeret l\u00e6setid\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)\",\"datePublished\":\"2023-05-02T14:37:47+00:00\",\"dateModified\":\"2023-08-24T09:17:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/\"},\"wordCount\":1737,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg\",\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/\",\"url\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/\",\"name\":\"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3) - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg\",\"datePublished\":\"2023-05-02T14:37:47+00:00\",\"dateModified\":\"2023-08-24T09:17:04+00:00\",\"description\":\"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og V8 JS Engine 11.3.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/dk\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\/\/kinsta.com\/dk\/emner\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/dk\/#website\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Hurtig, sikker, premium hostingl\u00f8sninger\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/dk\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\",\"https:\/\/x.com\/kinsta_dk\",\"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\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3) - Kinsta\u00ae","description":"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og 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\/dk\/blog\/node-js-20\/","og_locale":"da_DK","og_type":"article","og_title":"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)","og_description":"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og V8 JS Engine 11.3.","og_url":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","article_published_time":"2023-05-02T14:37:47+00:00","article_modified_time":"2023-08-24T09:17:04+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og V8 JS Engine 11.3.","twitter_image":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_dk","twitter_misc":{"Skrevet af":"Joel Olawanle","Estimeret l\u00e6setid":"9 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)","datePublished":"2023-05-02T14:37:47+00:00","dateModified":"2023-08-24T09:17:04+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/"},"wordCount":1737,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg","inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/","url":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/","name":"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3) - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg","datePublished":"2023-05-02T14:37:47+00:00","dateModified":"2023-08-24T09:17:04+00:00","description":"Node.js v20 er nu tilg\u00e6ngelig. Tag et kig p\u00e5, hvad der er nyt i denne version, herunder Test Runner, Permission Model, SEA og V8 JS Engine 11.3.","breadcrumb":{"@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/dk\/blog\/node-js-20\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#primaryimage","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/05\/node-js-20.jpg","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/dk\/blog\/node-js-20\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/dk\/"},{"@type":"ListItem","position":2,"name":"Node.js","item":"https:\/\/kinsta.com\/dk\/emner\/node-js\/"},{"@type":"ListItem","position":3,"name":"Nyheder i Node.js v20 (Test Runner, tilladelsesmodel, SEA, V8 JS Engine 11.3)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/dk\/#website","url":"https:\/\/kinsta.com\/dk\/","name":"Kinsta\u00ae","description":"Hurtig, sikker, premium hostingl\u00f8sninger","publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/dk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/dk\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/dk\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","https:\/\/x.com\/kinsta_dk","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\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/50442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/comments?post=50442"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/50442\/revisions"}],"predecessor-version":[{"id":50498,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/50442\/revisions\/50498"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/translations\/dk"},{"href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50442\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media\/50443"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media?parent=50442"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/tags?post=50442"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/topic?post=50442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}