CINXE.COM
Migrazione a Express 5
<!DOCTYPE html> <html lang="it" prefix="og: http://ogp.me/ns#"> <head> <title>Migrazione a Express 5</title> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/png" href="/images/favicon.png" /> <script data-cfasync="false" src="/js/theme.js"></script> <link rel="stylesheet" href="/css/variables.css?_=1740869890"> <link rel="stylesheet" href="/css/themes/dark-theme.css?_=1740869890"> <link rel="stylesheet" href="/css/style.css?_=1740869890"> <link rel="stylesheet" href="/css/sintax.css?_=1740869890"> <link rel="stylesheet" href="/css/font-awesome.min.css"> <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;subset=latin,latin-ext"> <link rel="stylesheet" href="/css/langs/it.css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="description" content="A comprehensive guide to migrating your Express.js applications from version 4 to 5, detailing breaking changes, deprecated methods, and new improvements."> <meta property="og:url" content="https://expressjs.com/it/guide/migrating-5.html"> <meta property="og:type" content="website" > <meta name="title" property="og:title" content="Migrazione a Express 5"> <meta property="og:description" content="A comprehensive guide to migrating your Express.js applications from version 4 to 5, detailing breaking changes, deprecated methods, and new improvements."> <meta property="og:image" content="https://expressjs.com/images/og.png" > <meta name="twitter:card" content="summary_large_image"> <meta property="twitter:domain" content="expressjs.com"> <meta property="twitter:url" content="https://expressjs.com/it/guide/migrating-5.html"> <meta name="twitter:title" content="Migrazione a Express 5"> <meta name="twitter:description" content="A comprehensive guide to migrating your Express.js applications from version 4 to 5, detailing breaking changes, deprecated methods, and new improvements."> <meta property="twitter:image" content="https://expressjs.com/images/og.png" > <script data-cfasync="false" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script data-cfasync="false" src="/js/app.js"></script> <script data-cfasync="false" defer src="/js/menu.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" /> </head> <body class="non-en-doc"> <header> <div id="mobile-menu"> <div id="nav-button" class="fa fa-bars fa-2x button"></div> </div> <section id="logo"><a href="/" class="express">Express</a> </section> <div id="navbar"> <input id="q" placeholder="🔎 search"> <ul id="navmenu"> <li> <a href="/" id="home-menu" > Home </a> </li> <li id="getting-started-menu" class="submenu"> <a href="/it/starter/installing.html" > Introduzione </a> <ul class="submenu-content"> <li> <a href="/it/starter/installing.html"> Installazione </a> </li> <li> <a href="/it/starter/hello-world.html"> Hello world </a> </li> <li> <a href="/it/starter/generator.html"> Programma di creazione Express </a> </li> <li> <a href="/it/starter/basic-routing.html"> Routing di base </a> </li> <li> <a href="/it/starter/static-files.html"> File statici </a> </li> <li> <a href="/it/starter/examples.html"> More examples </a> </li> <li> <a href="/it/starter/faq.html"> FAQ </a> </li> </ul> </li> <li id="guide-menu" class="submenu"> <a href="/it/guide/routing.html" class="active" > Guide </a> <ul class="submenu-content"> <li> <a href="/it/guide/routing.html"> Routing </a> </li> <li> <a href="/it/guide/writing-middleware.html"> Scrittura del middleware </a> </li> <li> <a href="/it/guide/using-middleware.html"> Utilizzo del middleware </a> </li> <li> <a href="/it/guide/overriding-express-api.html"> Overriding the Express API </a> </li> <li> <a href="/it/guide/using-template-engines.html"> Utilizzo dei motori di template </a> </li> <li> <a href="/it/guide/error-handling.html"> Gestione degli errori </a> </li> <li> <a href="/it/guide/debugging.html"> Debugging </a> </li> <li> <a href="/it/guide/behind-proxies.html"> Express con i proxy </a> </li> <li> <a href="/it/guide/migrating-4.html"> Passaggio a Express 4 </a> </li> <li> <a href="/it/guide/migrating-5.html"> Passaggio a Express 5 </a> </li> <li> <a href="/it/guide/database-integration.html"> Integrazione database </a> </li> </ul> </li> <li id="application-menu" class="submenu"> <a href="/it/5x/api.html" > Riferimento API </a> <ul class="submenu-content"> <li> <a href="/it/5x/api.html"> 5.x </a> </li> <li> <a href="/it/4x/api.html"> 4.x </a> </li> <li> <a href="/it/3x/api.html"> 3.x (deprecato) </a> </li> <li> <a href="/2x/"> 2.x (deprecato) </a> </li> </ul> </li> <li id="advanced-topics-menu" class="submenu"> <a href="/it/advanced/developing-template-engines.html" > Argomenti avanzati </a> <ul class="submenu-content"> <li> <a href="/it/advanced/developing-template-engines.html"> Motori di template </a> </li> <li> <a href="/it/advanced/security-updates.html"> Aggiornamenti sulla sicurezza </a> </li> <li> <a href="/it/advanced/best-practice-security.html"> Best practice sulla sicurezza </a> </li> <li> <a href="/it/advanced/best-practice-performance.html"> Best practice sulle prestazioni </a> </li> <li> <a href="/it/advanced/healthcheck-graceful-shutdown.html"> Health checks & shutdown </a> </li> </ul> </li> <li id="resources-menu" class="submenu"> <a href="/it/resources/glossary.html" > Risorse </a> <ul class="submenu-content"> <li> <a href="/it/resources/community.html"> Community </a> </li> <li> <a href="/it/resources/glossary.html"> Glossary </a> </li> <li> <a href="/it/resources/middleware.html"> Middleware </a> </li> <li> <a href="/it/resources/utils.html"> Utility modules </a> </li> <li> <a href="/it/resources/contributing.html"> Contributing to Express </a> </li> <li> <a href="/it/changelog"> Release Change Log </a> </li> </ul> </li> <li> <a href="/it/support" id="support-menu" > Support </a> </li> <li id="blog-menu" class="submenu"> <a href="/2025/01/09/rewind-2024-triumphs-and-2025-vision.html" > Blog </a> <ul class="submenu-content"> <li> <a href="/2025/01/09/rewind-2024-triumphs-and-2025-vision.html"> Latest post </a> </li> <li> <a href="/en/blog/posts.html"> All posts </a> </li> <li> <a href="/en/blog/write-post.html"> Write a Post </a> </li> </ul> </li> </ul> </div> <div class="header-right"> <div id="theme-icon-container" class="theme-toggle default-theme" title="toggle darkmode"> <i class="fa fa-moon-o fa-2x hidden-dark"></i> <span class="sun-icon hidden-light"></span> </div> <div id="navbar"> <ul id="navmenu"> <li class="submenu"> <div id="current-lang" class="current-lang"></div> <div id="languageData" data-languages='[{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"de","name":"Deutsch"},{"code":"es","name":"Español"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"ru","name":"Русский"},{"code":"zh-cn","name":"中文 (简体)"},{"code":"zh-tw","name":"繁體中文"},{"code":"ko","name":"한국어"},{"code":"pt-br","name":"Português"},{"code":"sk","name":"Slovenčina"},{"code":"uk","name":"Українська"},{"code":"uz","name":"Oʻzbekcha"},{"code":"tr","name":"Türkçe"},{"code":"th","name":"ภาษาไทย"},{"code":"id","name":"Indonesia"}]' style="display:none;"> </div> <ul class="submenu-content"> <li> <a href="/en/guide/migrating-5.html"> <strong>English</strong> </a> </li> <li> <a href="/fr/guide/migrating-5.html"> <strong>Français</strong> </a> </li> <li> <a href="/de/guide/migrating-5.html"> <strong>Deutsch</strong> </a> </li> <li> <a href="/es/guide/migrating-5.html"> <strong>Español</strong> </a> </li> <li> <a href="/it/guide/migrating-5.html"> <strong>Italiano</strong> </a> </li> <li> <a href="/ja/guide/migrating-5.html"> <strong>日本語</strong> </a> </li> <li> <a href="/ru/guide/migrating-5.html"> <strong>Русский</strong> </a> </li> <li> <a href="/zh-cn/guide/migrating-5.html"> <strong>中文 (简体)</strong> </a> </li> <li> <a href="/zh-tw/guide/migrating-5.html"> <strong>繁體中文</strong> </a> </li> <li> <a href="/ko/guide/migrating-5.html"> <strong>한국어</strong> </a> </li> <li> <a href="/pt-br/guide/migrating-5.html"> <strong>Português</strong> </a> </li> <li> <a href="/sk/guide/migrating-5.html"> <strong>Slovenčina</strong> </a> </li> <li> <a href="/uk/guide/migrating-5.html"> <strong>Українська</strong> </a> </li> <li> <a href="/uz/guide/migrating-5.html"> <strong>Oʻzbekcha</strong> </a> </li> <li> <a href="/tr/guide/migrating-5.html"> <strong>Türkçe</strong> </a> </li> <li> <a href="/th/guide/migrating-5.html"> <strong>ภาษาไทย</strong> </a> </li> <li> <a href="/id/guide/migrating-5.html"> <strong>Indonesia</strong> </a> </li> </ul> </li> </ul> </div> <div id="mobile-menu"> <div id="language-picker-button" class="button"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6" width="24" height="24" style="margin-top: 5px;"> <path stroke-linecap="round" stroke-linejoin="round" d="m10.5 21 5.25-11.25L21 21m-9-3h7.5M3 5.621a48.474 48.474 0 0 1 6-.371m0 0c1.12 0 2.233.038 3.334.114M9 5.25V3m3.334 2.364C11.176 10.658 7.69 15.08 3 17.502m9.334-12.138c.896.061 1.785.147 2.666.257m-4.589 8.495a18.023 18.023 0 0 1-3.827-5.802" /> </svg> </div> </div> <div id="language-picker-menu"> <div id="navbar"> <ul id="navmenu"> <li class="submenu"> <a href="/en/guide/migrating-5.html">English</a> </li> <li class="submenu"> <a href="/fr/guide/migrating-5.html">Français</a> </li> <li class="submenu"> <a href="/de/guide/migrating-5.html">Deutsch</a> </li> <li class="submenu"> <a href="/es/guide/migrating-5.html">Español</a> </li> <li class="submenu"> <a href="/it/guide/migrating-5.html">Italiano</a> </li> <li class="submenu"> <a href="/ja/guide/migrating-5.html">日本語</a> </li> <li class="submenu"> <a href="/ru/guide/migrating-5.html">Русский</a> </li> <li class="submenu"> <a href="/zh-cn/guide/migrating-5.html">中文 (简体)</a> </li> <li class="submenu"> <a href="/zh-tw/guide/migrating-5.html">繁體中文</a> </li> <li class="submenu"> <a href="/ko/guide/migrating-5.html">한국어</a> </li> <li class="submenu"> <a href="/pt-br/guide/migrating-5.html">Português</a> </li> <li class="submenu"> <a href="/sk/guide/migrating-5.html">Slovenčina</a> </li> <li class="submenu"> <a href="/uk/guide/migrating-5.html">Українська</a> </li> <li class="submenu"> <a href="/uz/guide/migrating-5.html">Oʻzbekcha</a> </li> <li class="submenu"> <a href="/tr/guide/migrating-5.html">Türkçe</a> </li> <li class="submenu"> <a href="/th/guide/migrating-5.html">ภาษาไทย</a> </li> <li class="submenu"> <a href="/id/guide/migrating-5.html">Indonesia</a> </li> </ul> </div> </div> </div> </header> <div id="overlay"></div> <div id="i18n-notice-box" class="doc-box doc-notice"> <p><p>Questa traduzione fornita da StrongLoop / IBM.</p> È possibile che questo documento non sia aggiornato poiché la documentazione è in inglese. Per gli ultimi aggiornamenti, fare riferimento alla <a href='/en/guide/migrating-5.html'>documentazione in inglese</a>. </p> <div id="close-i18n-notice-box" title="Close">✖</div> </div> <div class="content"> <main> <h1 id="passaggio-a-express-5">Passaggio a Express 5</h1> <h2 id="overview">Panoramica</h2> <p>Express 5.0 si trova ancora nella fase di release alfa, ma di seguito vengono mostrate le modifiche che verranno riportate nel release e come migrare l’applicazione Express 4 a Express 5.</p> <p>Express 5 non è molto differente da Express 4: le modifiche all’API non sono così importanti come quelle che sono state effettuate nel passaggio dalla 3.0 alla 4.0. Anche se le API di base sono le stesse, ci sono comunque delle modifiche importanti; in altre parole, un programma Express 4 esistente potrebbe non funzionare se lo si aggiorna per utilizzare Express 5.</p> <p>Per installare l’ultima alfa e per vedere in anteprima Express 5, immettere il seguente comando nella directory root dell’applicazione:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>npm <span class="nb">install</span> <span class="s2">"express@^5.0.1"</span> <span class="nt">--save</span> </code></pre></div></div> <p>È quindi possibile eseguire i test automatizzati per trovare errori e correggere i problemi in base agli aggiornamenti elencati di seguito. Dopo aver gestito gli errori del test, avviare l’applicazione per verificare gli errori. Si noterà subito se l’applicazione utilizza qualsiasi metodo o proprietà non supportati.</p> <h2 id="changes">Modifiche in Express 5</h2> <p>Di seguito viene riportato l’elenco di modifiche (a partire dal release alfa) che influenzeranno gli utenti di Express. Consultare <a href="https://github.com/expressjs/express/pull/2237">pull request</a> per un elenco di funzioni pianificate.</p> <p><strong>Proprietà e metodi rimossi</strong></p> <ul class="doclist"> <li><a href="#app.del">app.del()</a></li> <li><a href="#app.param">app.param(fn)</a></li> <li><a href="#plural">Nomi di metodi al plurale</a></li> <li><a href="#leading">Due punti nell'argomento del nome in app.param(name, fn)</a></li> <li><a href="#req.param">req.param(name)</a></li> <li><a href="#res.json">res.json(obj, status)</a></li> <li><a href="#res.jsonp">res.jsonp(obj, status)</a></li> <li><a href="#res.send.body">res.send(body, status)</a></li> <li><a href="#res.send.status">res.send(status)</a></li> <li><a href="#res.sendfile">res.sendfile()</a></li> </ul> <p><strong>Modificato</strong></p> <ul class="doclist"> <li><a href="#app.router">app.router</a></li> <li><a href="#req.host">req.host</a></li> <li><a href="#req.query">req.query</a></li> </ul> <p><strong>Miglioramenti</strong></p> <ul class="doclist"> <li><a href="#res.render">res.render()</a></li> </ul> <h3>Proprietà e metodi rimossi</h3> <p>Se si utilizza uno dei seguenti metodi o proprietà nell’applicazione, quest’ultima si chiuderà in modo anomalo. Quindi, sarà necessario modificare l’applicazione dopo aver effettuato l’aggiornamento alla versione 5.</p> <h4 id="app.del">app.del()</h4> <p>Express 5 non supporta più la funzione <code class="language-plaintext highlighter-rouge">app.del()</code>. Se si utilizza questa funzione verrà generato un errore. Per registrare le route HTTP DELETE, utilizzare al contrario la funzione <code class="language-plaintext highlighter-rouge">app.delete()</code>.</p> <p>Inizialmente era stato utilizzato il comando <code class="language-plaintext highlighter-rouge">del</code> al posto di <code class="language-plaintext highlighter-rouge">delete</code>, perché <code class="language-plaintext highlighter-rouge">delete</code> è una parola chiave riservata in JavaScript. Tuttavia, a partire da ECMAScript 6, <code class="language-plaintext highlighter-rouge">delete</code> e altre parole chiave riservate possono essere utilizzate liberamente come nomi di proprietà. È possibile leggere la documentazione in cui viene descritto come si è arrivati alla deprecazione della funzione <code class="language-plaintext highlighter-rouge">app.del</code> qui.</p> <h4 id="app.param">app.param(fn)</h4> <p>La firma <code class="language-plaintext highlighter-rouge">app.param(fn)</code> è stata utilizzata per modificare la funzionalità della funzione <code class="language-plaintext highlighter-rouge">app.param(name, fn)</code>. È stata considerata obsoleta a partire dalla v4.11.0 e non è più supportata in Express 5.</p> <h4 id="plural">Nomi di metodi al plurale</h4> <p>I seguenti nomi di metodi sono stati messi al plurale. In Express 4, l’utilizzo di vecchi metodi ha dato origine ad avvisi di deprecazione. Express 5 non li supporta più in alcun modo:</p> <p><code class="language-plaintext highlighter-rouge">req.acceptsCharset()</code> è stato sostituito con <code class="language-plaintext highlighter-rouge">req.acceptsCharsets()</code>.</p> <p><code class="language-plaintext highlighter-rouge">req.acceptsEncoding()</code> è stato sostituito con <code class="language-plaintext highlighter-rouge">req.acceptsEncodings()</code>.</p> <p><code class="language-plaintext highlighter-rouge">req.acceptsLanguage()</code> è stato sostituito con <code class="language-plaintext highlighter-rouge">req.acceptsLanguages()</code>.</p> <h4 id="leading">Due punti (:) nel nome per app.param(name, fn)</h4> <p>I due punti (:) nel nome della funzione <code class="language-plaintext highlighter-rouge">app.param(name, fn)</code> è una eredità di Express 3 e per il bene della compatibilità con le versioni precedenti, Express 4 supporta questa condizione ma comunque fornendo un messaggio di avviso di deprecazione. Express 5 lo ignorerà senza avvisi e utilizzerà il parametro nome senza inserire i due punti.</p> <p>Questa procedura non dovrebbe influenzare il codice se si segue correttamente la documentazione di Express 4 di <a href="/it/4x/api.html#app.param">app.param</a>, poiché non si parla dei due punti.</p> <h4 id="req.param">req.param(name)</h4> <p>Questo metodo poco chiaro e molto pericoloso che si utilizzava per richiamare i dati del modulo è stato rimosso. Ora sarà necessario ricercare il nome del parametro inviato nell’oggetto <code class="language-plaintext highlighter-rouge">req.params</code>, <code class="language-plaintext highlighter-rouge">req.body</code> o <code class="language-plaintext highlighter-rouge">req.query</code>.</p> <h4 id="res.json">res.json(obj, status)</h4> <p>Express 5 non supporta più la firma <code class="language-plaintext highlighter-rouge">res.json(obj, status)</code>. Al contrario, impostare lo stato e successivamente associarlo al metodo <code class="language-plaintext highlighter-rouge">res.json()</code> come segue: <code class="language-plaintext highlighter-rouge">res.status(status).json(obj)</code>.</p> <h4 id="res.jsonp">res.jsonp(obj, status)</h4> <p>Express 5 non supporta più la firma <code class="language-plaintext highlighter-rouge">res.jsonp(obj, status)</code>. Al contrario, impostare lo stato e successivamente associarlo al metodo <code class="language-plaintext highlighter-rouge">res.jsonp()</code> come segue: <code class="language-plaintext highlighter-rouge">res.status(status).jsonp(obj)</code>.</p> <h4 id="res.send.body">res.send(body, status)</h4> <p>Express 5 non supporta più la firma <code class="language-plaintext highlighter-rouge">res.send(obj, status)</code>. Al contrario, impostare lo stato e successivamente associarlo al metodo <code class="language-plaintext highlighter-rouge">res.send()</code> come segue: <code class="language-plaintext highlighter-rouge">res.status(status).send(obj)</code>.</p> <h4 id="res.send.status">res.send(status)</h4> <p>Express 5 non supporta più la firma <code>res.send(<em>status</em>)</code>, dove <em><code class="language-plaintext highlighter-rouge">status</code></em> è un numero. Al contrario, utilizzare la funzione <code class="language-plaintext highlighter-rouge">res.sendStatus(statusCode)</code>, la quale imposta il codice di stato dell’intestazione della risposta HTTP e invia la versione di testo del codice: “Non trovato”, “Errore interno del server” e così via. Se è necessario inviare un numero utilizzando la funzione <code class="language-plaintext highlighter-rouge">res.send()</code>, citare il numero per convertirlo in una stringa, in modo tale che Express non lo interpreti come un tentativo di utilizzo di una firma vecchia non supportata.</p> <h4 id="res.sendfile">res.sendfile()</h4> <p>La funzione <code class="language-plaintext highlighter-rouge">res.sendfile()</code> è stata sostituita da una versione in cui ogni frase composta inizia con una lettera maiuscola che utilizza ad esempio <code class="language-plaintext highlighter-rouge">res.sendFile()</code> in Express 5.</p> <h3>Modificato</h3> <h4 id="app.router">app.router</h4> <p>L’oggetto <code class="language-plaintext highlighter-rouge">app.router</code>, che era stato rimosso in Express 4, è ritornato in Express 5. Nella nuova versione, questo oggetto è solo un riferimento al router Express di base, diversamente da Express 3, in cui un’applicazione aveva il compito esplicito di caricarlo.</p> <h4 id="req.host">req.host</h4> <p>In Express 4, la funzione <code class="language-plaintext highlighter-rouge">req.host</code> andava a rimuovere in modo non corretto il numero porta nel caso fosse stato presente. In Express 5 il numero porta viene conservato.</p> <h4 id="req.query">req.query</h4> <p>In Express 4.7 e da Express 5 in avanti, l’opzione parser query può accettare <code class="language-plaintext highlighter-rouge">false</code> per disabilitare l’analisi della stringa query quando si desidera utilizzare la propria funzione per la logica di analisi della stringa query.</p> <h3>Miglioramenti</h3> <h4 id="res.render">res.render()</h4> <p>Questo metodo ora potenzia i funzionamenti asincroni per tutti i motori di visualizzazione, evitando i bug causati dai motori di visualizzazione con un’implementazione sincrona e che violavano l’interfaccia consigliata.</p> </main> </div> <a id="top" href="#"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" fill="none" viewBox="0 0 1155 1000"><path fill="currentColor" d="m577.344 0 577.346 1000H0L577.344 0Z"/></svg></a> <footer> <section id="doc-langs"> Documentation translations provided by StrongLoop/IBM: <a href="/fr/">French</a>, <a href="/de/">German</a>, <a href="/es/">Spanish</a>, <a href="/it/">Italian</a>, <a href="/ja/">Japanese</a>, <a href="/ru/">Russian</a>, <a href="/zh-cn/">Chinese</a>, <a href="/zh-tw/">Traditional Chinese</a>, <a href="/ko/">Korean</a>, <a href="/pt-br/">Portuguese</a>. <br> Community translation available for: <a href="/sk/">Slovak</a>, <a href="/uk/">Ukrainian</a>, <a href="/uz/">Uzbek</a>, <a href="/tr/">Turkish</a>, <a href="/th/">Thai</a> and <a href="/id/">Indonesian</a>. </section> <section id="footer-content"> <div id="footer-copyright"> <a href="https://openjsf.org/"> <img src="https://raw.githubusercontent.com/openjs-foundation/artwork/main/openjs_foundation/openjs_foundation-logo-horizontal-color.svg" alt="OpenJS Foundation" width="125" height="39" class="hidden-dark" /> <img src="https://raw.githubusercontent.com/openjs-foundation/artwork/main/openjs_foundation/openjs_foundation-logo-horizontal-white.svg" alt="OpenJS Foundation" width="125" height="39" class="hidden-light" /> </a> <div id="footer-policy"> <a href="https://terms-of-use.openjsf.org"> Terms of Use </a> <a href="https://privacy-policy.openjsf.org"> Privacy Policy </a> <a id="coc" href="https://github.com/expressjs/express/blob/master/Code-Of-Conduct.md"> Code of Conduct </a> <a href="https://trademark-policy.openjsf.org"> Trademark Policy </a> <a id="security" href="https://github.com/expressjs/express/security/policy"> Security Policy </a> <a id="license" href="https://github.com/expressjs/express/blob/master/LICENSE"> License </a> </div> </div> <div id="footer-links"> <div class="footer-social"> <div> <a href="https://github.com/expressjs/express" aria-label="Go to the repository on GitHub"> <span class="hidden-dark"> <svg viewBox="0 0 256 250" width="20" height="20" fill="#24292f" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" > <path d="M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46 6.397 1.185 8.746-2.777 8.746-6.158 0-3.052-.12-13.135-.174-23.83-35.61 7.742-43.124-15.103-43.124-15.103-5.823-14.795-14.213-18.73-14.213-18.73-11.613-7.944.876-7.78.876-7.78 12.853.902 19.621 13.19 19.621 13.19 11.417 19.568 29.945 13.911 37.249 10.64 1.149-8.272 4.466-13.92 8.127-17.116-28.431-3.236-58.318-14.212-58.318-63.258 0-13.975 5-25.394 13.188-34.358-1.329-3.224-5.71-16.242 1.24-33.874 0 0 10.749-3.44 35.21 13.121 10.21-2.836 21.16-4.258 32.038-4.307 10.878.049 21.837 1.47 32.066 4.307 24.431-16.56 35.165-13.12 35.165-13.12 6.967 17.63 2.584 30.65 1.255 33.873 8.207 8.964 13.173 20.383 13.173 34.358 0 49.163-29.944 59.988-58.447 63.157 4.591 3.972 8.682 11.762 8.682 23.704 0 17.126-.148 30.91-.148 35.126 0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002 256 57.307 198.691 0 128.001 0Zm-80.06 182.34c-.282.636-1.283.827-2.194.39-.929-.417-1.45-1.284-1.15-1.922.276-.655 1.279-.838 2.205-.399.93.418 1.46 1.293 1.139 1.931Zm6.296 5.618c-.61.566-1.804.303-2.614-.591-.837-.892-.994-2.086-.375-2.66.63-.566 1.787-.301 2.626.591.838.903 1 2.088.363 2.66Zm4.32 7.188c-.785.545-2.067.034-2.86-1.104-.784-1.138-.784-2.503.017-3.05.795-.547 2.058-.055 2.861 1.075.782 1.157.782 2.522-.019 3.08Zm7.304 8.325c-.701.774-2.196.566-3.29-.49-1.119-1.032-1.43-2.496-.726-3.27.71-.776 2.213-.558 3.315.49 1.11 1.03 1.45 2.505.701 3.27Zm9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033-1.448-.439-2.395-1.613-2.103-2.626.301-1.01 1.747-1.484 3.207-1.028 1.446.436 2.396 1.602 2.095 2.622Zm10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95-1.53.034-2.769-.82-2.786-1.86 0-1.065 1.202-1.932 2.733-1.958 1.522-.03 2.768.818 2.768 1.868Zm10.555-.405c.182 1.03-.875 2.088-2.387 2.37-1.485.271-2.861-.365-3.05-1.386-.184-1.056.893-2.114 2.376-2.387 1.514-.263 2.868.356 3.061 1.403Z" /> </svg> </span> <span class="hidden-light"> <svg viewBox="0 0 256 250" width="20" height="20" fill="#fff" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" > <path d="M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46 6.397 1.185 8.746-2.777 8.746-6.158 0-3.052-.12-13.135-.174-23.83-35.61 7.742-43.124-15.103-43.124-15.103-5.823-14.795-14.213-18.73-14.213-18.73-11.613-7.944.876-7.78.876-7.78 12.853.902 19.621 13.19 19.621 13.19 11.417 19.568 29.945 13.911 37.249 10.64 1.149-8.272 4.466-13.92 8.127-17.116-28.431-3.236-58.318-14.212-58.318-63.258 0-13.975 5-25.394 13.188-34.358-1.329-3.224-5.71-16.242 1.24-33.874 0 0 10.749-3.44 35.21 13.121 10.21-2.836 21.16-4.258 32.038-4.307 10.878.049 21.837 1.47 32.066 4.307 24.431-16.56 35.165-13.12 35.165-13.12 6.967 17.63 2.584 30.65 1.255 33.873 8.207 8.964 13.173 20.383 13.173 34.358 0 49.163-29.944 59.988-58.447 63.157 4.591 3.972 8.682 11.762 8.682 23.704 0 17.126-.148 30.91-.148 35.126 0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002 256 57.307 198.691 0 128.001 0Zm-80.06 182.34c-.282.636-1.283.827-2.194.39-.929-.417-1.45-1.284-1.15-1.922.276-.655 1.279-.838 2.205-.399.93.418 1.46 1.293 1.139 1.931Zm6.296 5.618c-.61.566-1.804.303-2.614-.591-.837-.892-.994-2.086-.375-2.66.63-.566 1.787-.301 2.626.591.838.903 1 2.088.363 2.66Zm4.32 7.188c-.785.545-2.067.034-2.86-1.104-.784-1.138-.784-2.503.017-3.05.795-.547 2.058-.055 2.861 1.075.782 1.157.782 2.522-.019 3.08Zm7.304 8.325c-.701.774-2.196.566-3.29-.49-1.119-1.032-1.43-2.496-.726-3.27.71-.776 2.213-.558 3.315.49 1.11 1.03 1.45 2.505.701 3.27Zm9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033-1.448-.439-2.395-1.613-2.103-2.626.301-1.01 1.747-1.484 3.207-1.028 1.446.436 2.396 1.602 2.095 2.622Zm10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95-1.53.034-2.769-.82-2.786-1.86 0-1.065 1.202-1.932 2.733-1.958 1.522-.03 2.768.818 2.768 1.868Zm10.555-.405c.182 1.03-.875 2.088-2.387 2.37-1.485.271-2.861-.365-3.05-1.386-.184-1.056.893-2.114 2.376-2.387 1.514-.263 2.868.356 3.061 1.403Z" /> </svg> </span> </a> </div> <div> <a href="https://www.youtube.com/channel/UCYjxjAeH6TRik9Iwy5nXw7g" aria-label="Go to the repository on Youtube"><svg viewBox="0 0 256 180" height="20" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M250.346 28.075A32.18 32.18 0 0 0 227.69 5.418C207.824 0 127.87 0 127.87 0S47.912.164 28.046 5.582A32.18 32.18 0 0 0 5.39 28.24c-6.009 35.298-8.34 89.084.165 122.97a32.18 32.18 0 0 0 22.656 22.657c19.866 5.418 99.822 5.418 99.822 5.418s79.955 0 99.82-5.418a32.18 32.18 0 0 0 22.657-22.657c6.338-35.348 8.291-89.1-.164-123.134Z" fill="red"/><path fill="#FFF" d="m102.421 128.06 66.328-38.418-66.328-38.418z"/></svg></a> </div> <div> <a href="https://x.com/UseExpressJS" aria-label="Go to the repository on X"> <span class="hidden-dark"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 1200 1227"><path fill="#000" d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"/></svg> </span> <span class="hidden-light"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 1200 1227"><path fill="#fff" d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"/></svg> </span> </a> </div> <div> <a href="https://openjs-foundation.slack.com/archives/C02QB1731FH" aria-label="Go to the repository on Slack"><svg viewBox="0 0 2447.6 2452.5" xmlns="http://www.w3.org/2000/svg" width="20" height="20" > <g clip-rule="evenodd" fill-rule="evenodd"> <path d="m897.4 0c-135.3.1-244.8 109.9-244.7 245.2-.1 135.3 109.5 245.1 244.8 245.2h244.8v-245.1c.1-135.3-109.5-245.1-244.9-245.3.1 0 .1 0 0 0m0 654h-652.6c-135.3.1-244.9 109.9-244.8 245.2-.2 135.3 109.4 245.1 244.7 245.3h652.7c135.3-.1 244.9-109.9 244.8-245.2.1-135.4-109.5-245.2-244.8-245.3z" fill="#36c5f0" /> <path d="m2447.6 899.2c.1-135.3-109.5-245.1-244.8-245.2-135.3.1-244.9 109.9-244.8 245.2v245.3h244.8c135.3-.1 244.9-109.9 244.8-245.3zm-652.7 0v-654c.1-135.2-109.4-245-244.7-245.2-135.3.1-244.9 109.9-244.8 245.2v654c-.2 135.3 109.4 245.1 244.7 245.3 135.3-.1 244.9-109.9 244.8-245.3z" fill="#2eb67d" /> <path d="m1550.1 2452.5c135.3-.1 244.9-109.9 244.8-245.2.1-135.3-109.5-245.1-244.8-245.2h-244.8v245.2c-.1 135.2 109.5 245 244.8 245.2zm0-654.1h652.7c135.3-.1 244.9-109.9 244.8-245.2.2-135.3-109.4-245.1-244.7-245.3h-652.7c-135.3.1-244.9 109.9-244.8 245.2-.1 135.4 109.4 245.2 244.7 245.3z" fill="#ecb22e" /> <path d="m0 1553.2c-.1 135.3 109.5 245.1 244.8 245.2 135.3-.1 244.9-109.9 244.8-245.2v-245.2h-244.8c-135.3.1-244.9 109.9-244.8 245.2zm652.7 0v654c-.2 135.3 109.4 245.1 244.7 245.3 135.3-.1 244.9-109.9 244.8-245.2v-653.9c.2-135.3-109.4-245.1-244.7-245.3-135.4 0-244.9 109.8-244.8 245.1 0 0 0 .1 0 0" fill="#e01e5a" /> </g> </svg> </a> </div> <div> <a href="https://opencollective.com/express" aria-label="Go to the repository on Open Collective"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 64 64" fill-rule="evenodd"><path d="M52.402 31.916c0 4.03-1.17 7.895-3.178 11.087l8.196 8.23c4.014-5.375 6.523-12.094 6.523-19.318s-2.51-13.942-6.523-19.318l-8.196 8.23c2.007 3.192 3.178 6.887 3.178 11.087z" fill="#b8d3f4"/><path d="M32.004 52.41c-11.207 0-20.406-9.24-20.406-20.493s9.2-20.493 20.406-20.493c4.182 0 7.86 1.176 11.04 3.36l8.196-8.23C45.887 2.52 39.197 0 32.004 0 14.44 0 .057 14.278.057 32.084S14.44 64 32.004 64c7.36 0 14.05-2.52 19.403-6.55l-8.196-8.23c-3.178 2.016-7.025 3.192-11.207 3.192z" fill="#3385ff"/></svg></a> </div> <div> <a href="https://bsky.app/profile/expressjs.bsky.social" aria-label="Go to the repository on Bluesky"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -3.268 64 68.414" height="20" width="20"><path fill="#0085ff" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805zm36.254 0C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745z"/></svg></a> </div> </div> <a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-accent.svg" alt="Preview Deploys by Netlify" width="80" /> </a> </div> </section> </footer> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js" onload="docsearch({ apiKey: '7164e33055faa6ecddefd9e08fc59f5d', indexName: 'expressjs', inputSelector: '#q', algoliaOptions: { 'facetFilters': ['lang:it'] } })" async></script> </body> </html>