Stack

Perché il browser non trova la libreria importata per nome

Se il modulo del tuo sito importa una libreria per nome, lo standard HTML chiede una import map che trasformi quel nome in un URL. Senza quella mappa, Chrome 157 non richiede il file.

Marco Conte 3 min di lettura

Perché il browser non trova la libreria importata per nome
In questa guida (3)
  1. 1Come lo standard legge il nome
  2. 2Che cosa ha chiesto Chrome al server
  3. 3Come va scritto il blocco

Il 10 novembre 2026 ho letto, nello standard HTML, la sezione Import maps e l'algoritmo che trasforma il nome di un modulo in un URL. Poi ho aperto tre pagine locali in Chrome 157.0.8103.50. Il nome usato nelle prove è mappa: non è una libreria pubblicata. Il file conteneva solo un valore di controllo.

Come lo standard legge il nome

Lo standard separa gli specifier che si possono leggere come URL dagli altri. Nel primo gruppo stanno le stringhe che iniziano con /, ./ o ../, e quelle che il parser degli URL accetta da sole. Le altre sono nomi nudi. Se la import map della finestra non rimanda quel nome a un URL, l'algoritmo non prosegue con un indirizzo inventato: lancia un TypeError e dice che lo specifier era un bare specifier non rimappato.

La mappa più semplice, nell'esempio dello standard, è un oggetto imports che associa il nome moment a un percorso. La stessa sezione ammette anche chiavi che finiscono con /, per un prefisso, e una chiave scopes, per cambiare risoluzione in base all'URL del modulo che importa. Non ho provato né il prefisso né scopes.

Che cosa ha chiesto Chrome al server

Nella prima pagina uno script con type module conteneva import "mappa", e non c'era una import map. Chrome ha segnalato TypeError: Failed to resolve module specifier "mappa". Relative references must start with either "/", "./", or "../". Tra le richieste arrivate al server non c'era il file del modulo.

Nella seconda pagina, prima del modulo, uno script con type importmap conteneva un JSON con una sola coppia in imports: la chiave mappa e il valore ./mappa.js. Lo stesso import "mappa" ha allora chiesto /mappa.js, e la pagina ha letto il valore esportato. Nella terza pagina la mappa non c'era e lo script importava ./mappa.js. Anche lì il browser ha chiesto /mappa.js e ha letto lo stesso valore. Senza mappa, il nome e il percorso relativo non chiedono la stessa risorsa.

Come va scritto il blocco

Lo standard consegna la mappa in uno script inline, con type uguale a importmap. Il testo deve essere JSON valido e rappresentare un oggetto. Le chiavi ammesse sono al massimo imports, scopes e integrity. I valori dentro imports sono URL assoluti, oppure stringhe che iniziano con /, ./ o ../. Se una chiave finisce con /, deve finire con / anche il valore. Il JSON della prova rispettava questo caso minimo. Non ho messo una mappa in un file esterno.

La stessa sezione dice che un documento può elaborare più import map, prima o dopo i moduli, e che l'unione non lascia ridefinire una risoluzione già scritta da una mappa precedente o già risolta. Non ho caricato una seconda mappa. La chiave integrity, prevista dallo standard per associare un controllo di integrità a un URL, non era nel JSON di prova. Il controllo su un file portato da fuori è un'altra domanda, in Perché il file che il tuo sito carica da fuori può cambiare.

L'immagine di copertina, sulla scheda Wikimedia, è di Alexander-design, con data 17 luglio 2016 e licenza CC0. È un primo piano di tasti. Non è una import map e non è la pagina di prova. La copertina pubblicata è un ritaglio di quel file, con il marchio del sito.

Potrebbe interessarti anche...

Hai bisogno di scegliere una webagency per il tuo progetto?

Abbiamo la soluzione giusta

Parliamone
  • Consulenza specializzata
  • Soluzioni su misura
  • Risultati concreti

Tecnologialiberaper tutti

Hai bisogno d'aiuto?

Parla con noi. Il nostro supporto è attivo tutti i giorni dalle 9 alle 18

+390835239514 Chiamaci

Crea il tuo eCommerce

Creiamo eCommerce su misura senza farti spendere un patrimonio

info@roxxoitalia.com Scopri il nostro CMS

Crea il tuo sito web

Siti web già pronti per andare online. Vuoi saperne di più? Contattaci

info@roxxoitalia.com Scrivici