Node 18/20 - Error: error:0308010C:digital envelope routines::unsupported #8
lifeisfoo
started this conversation in
Errori e refusi
Replies: 1 comment
-
Nuova soluzione disponibile qui #11 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Problema
Un lettore (che ringrazio) mi ha segnalato che, usando Node 18, l'esecuzione di
npm start
nei vari capitoli genera questo errore e impedisce al server di sviluppo di avviarsi.Il problema è legato a delle funzionalità usate da
react-scripts
che sono state deprecate in Node 18+.Il libro è stato scritto quando Node 16 era la versione LTS e quindi quella consigliata: ora che la versione LTS è diventata la 18, tutti gli utenti che installano Node per la prima volta si ritrovano ad installare quest'ultima.
Soluzioni
1. Installare Node 16 al posto di 18
Questa è la soluzione più semplice ma, lavorando con più progetti potrebbe essere possibile ritrovarsi a cambiare versione di nuovo nel prossimo futuro. Quindi non è una soluzione consigliata.
2. Usare un gestore delle versioni di Node per avere più versioni di Node installate contemporaneamente
Questa, secondo me, è la soluzione migliore perché permette di risolvere sia questo problema, che eventuali altri futuri con altri progetti.
L'unico aspetto negativo è che necessario installare e configurare un software aggiuntivo sul PC, un cosiddetto "node version manager".
Questi sono due esempi di "node version manager":
3. Modificare il file package.json per aggiungere un'opzione ai
react-script
È possibile usare Node 18 modificando il package.json dei vari capitoli - questa è la soluzione più semplice.
Basta modificare i vari
react-scripts start
inreact-scripts --openssl-legacy-provider start
.Questa opzione fa in modo che vengano abilitati su Node 18 delle funzionalità che sono state segnate come legacy e che generano l'errore che vedi.
Facendo così, il progetto partirà senza problemi.
Beta Was this translation helpful? Give feedback.
All reactions