Risoluzione dei problemi Node.js
Questo documento è pensato per aiutare gli sviluppatori che utilizzano l'ambiente di sviluppo locale ServBay a risolvere i problemi più comuni che possono incontrare nell'utilizzo dei pacchetti Node.js.
Impossibile trovare la versione del comando Node.js/npm/pnpm/yarn
Quando si utilizzano Node.js, npm, pnpm o yarn tramite ServBay, potresti ricevere un errore simile al seguente che indica che il sistema non riesce a trovare la specifica versione eseguibile di Node.js che stai cercando di utilizzare:
bash
Warning: Specified Node.js version '22' for 'node' not found.
If this is not your intention, please delete the 'NODE_VERSION' configuration
from the '.servbay.config' file in the current directory.
1
2
3
2
3
Questo di solito accade perché la versione specifica di Node.js che stai cercando di usare non è ancora installata in ServBay oppure vorresti utilizzare una versione di Node.js installata tramite strumenti esterni come nvm
o homebrew
, ma a causa della configurazione dell’ambiente queste versioni non vengono rilevate da ServBay.
Suggerimento
Dopo aver installato ServBay, il sistema configura alias di script che danno priorità all’uso dei pacchetti Node.js installati tramite ServBay. Se ServBay non trova la versione specificata, prova progressivamente a utilizzare la versione predefinita installata tramite nvm
, poi quella installata tramite homebrew
. Se nessuna di queste risulta disponibile, verrà segnalato l’errore sopra riportato.
Analisi delle cause:
- La versione di Node.js che si vuole utilizzare non è installata tramite l'applicazione ServBay.
- Sul sistema sono installati
nvm
ohomebrew
e si desidera usare la versione di Node.js gestita da questi strumenti. Tuttavia, a causa di una configurazione errata dell’ambiente shell (in particolare delle variabiliPATH
oNVM_BIN
), il meccanismo di fallback di ServBay non riesce a trovare Node.js installato esternamente.
Soluzioni:
Se hai già installato nvm
e una versione di Node.js tramite esso, ma ricevi comunque questo errore, la causa più comune è la mancanza o la configurazione scorretta della variabile d’ambiente NVM_BIN
nella configurazione della tua shell. Quando nvm
è correttamente installato, questa variabile dovrebbe essere impostata automaticamente e indica il percorso degli eseguibili Node.js installati tramite nvm
, risultando essenziale per il funzionamento corretto di nvm
.
Ti basta quindi controllare e correggere la configurazione relativa a nvm
nel tuo file di configurazione della shell (come ~/.zshrc
, ~/.bash_profile
ecc.), assicurandoti che la variabile NVM_BIN
sia correttamente impostata ed esportata. Successivamente, ricarica il file di configurazione (ad esempio eseguendo source ~/.zshrc
oppure riavviando il terminale). Dopo questi passaggi, il meccanismo di fallback di ServBay dovrebbe riuscire a individuare correttamente la versione di Node.js gestita da nvm
.
Se invece non utilizzi nvm
o homebrew
, oppure preferisci affidarti alle versioni di Node.js gestite da ServBay, assicurati che la versione desiderata sia installata tramite l’interfaccia "Pacchetti" dell’applicazione ServBay.
Errore di architettura non supportata usando pacchetti npm come node-sass
Gli utenti macOS con chip Apple Silicon (M1/M2/M3/M4, architettura Arm64) potrebbero riscontrare errori come Unsupported architecture (arm64)
usando pacchetti npm più vecchi o che dipendono da moduli nativi (ad esempio node-sass
). Questo succede perché alcune versioni di questi pacchetti offrono solo binari o configurazioni di compilazione per l’architettura x86_64.
bash
ERROR: Module Error (from ./node_modules/sass-loader/dist/cjs.js):
Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Node.js 14.x
For more information on which environments are supported
please see:
https://github.com/sass/node-sass/releases/tag/v4.14.1
1
2
3
4
5
2
3
4
5
Analisi delle cause:
Alcuni pacchetti npm includono codice nativo C++ o scritto in altri linguaggi compilati. Questo tipo di codice deve essere compilato per una specifica architettura CPU. Le versioni più vecchie di questi pacchetti spesso non forniscono supporto o binari precompilati per l’architettura Arm64 (Apple Silicon).
Soluzioni:
Sostituire con alternative moderne e compatibili con Arm64 (Consigliato):
La soluzione raccomandata è passare a pacchetti più moderni che offrano pieno supporto per Arm64. Ad esempio, sostituisci
node-sass
(ormai poco mantenuto e con funzionalità limitate) con il pacchettosass
, più potente e attivamente aggiornato. La maggior parte dei progetti e strumenti frontend moderni ha già adottatosass
.bashnpm uninstall node-sass npm install --save-dev sass
1
2Installare Node.js per architettura x86_64 in ServBay ed eseguire tramite Rosetta 2 (Sconsigliato):
ServBay offre la possibilità di installare pacchetti Node.js per architettura
x86_64
. Su Mac Apple Silicon, questo ti permette di eseguire Node.js e i relativi moduli nativi x86_64 tramite il livello di traduzione Rosetta 2 integrato in macOS. Puoi installare la versionex86_64
di Node.js tramite la sezione "Pacchetti" dell'app ServBay.Nota: Questa opzione non è consigliata come soluzione a lungo termine, poiché si basa sull’emulazione Rosetta 2, che potrebbe causare perdita di performance e possibili problemi di compatibilità rispetto all’ambiente Arm64 nativo. Dai precedenza alla soluzione 1.