node.js - TypeError: crypto.randomUUID er ikke en funksjon
Min Next.js-app fungerer som en sjarm på http://localhost:3000/.
Jeg la til følgende linje i hosts-filen min.
127.0.0.1 whatever.local
Når jeg kobler til http://whatever.local:3000/, returnerer mine klientside-komponenter følgende feil.
TypeError: crypto.randomUUID er ikke en funksjon
Jeg bruker crypto.randomUUID() når jeg oppretter underordnede objekter, som i følgende eksempel.
{lookupItemList.map((lookupItem: LookupItem) =>
<option
key={crypto.randomUUID()}
value={lookupItem.key}>
{lookupItem.value}
</option>
)}
Svar #1
for det første er det ikke god praksis å bruke crypto.randomUUID() som nøkkel for elementene dine, bruk i stedet element-ID-er eller annen spesifikk informasjon om elementene dine.
og for spørsmålet ditt, merk at window.crypto.randomUUID bare er tilgjengelig under HTTPS-kontekst. localhost behandles som en sikker opprinnelse, selv uten HTTPS. For alt annet enn localhost, trenger du HTTPS.
Svar #2
Som et alternativ til crypto.randomUUID(), kan du bruke uuid-biblioteket.
import { v4 as uuidv4 } from 'uuid';
let uuid = uuidv4();
console.log(uuid) // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
så, for koden din:
{lookupItemList.map((lookupItem: LookupItem) =>
<option
key={uuid}
value={lookupItem.key}>
{lookupItem.value}
</option>
)}
