Installare Node.js nel sottosistema Windows per Linux (WSL2)

Se si preferisce usare Node.js in un ambiente Linux, si ritiene che la velocità delle prestazioni e la compatibilità delle chiamate di sistema siano importanti, si desidera eseguire Contenitori Docker che sfruttano le aree di lavoro Linux ed evitare di dover gestire gli script di compilazione sia Linux che Windows o semplicemente si preferisce usare una riga di comando Bash, si desidera installare Node.js nel sottosistema Windows per Linux (più specificamente, WSL 2).

L'uso del sottosistema Windows per Linux (WSL) potrebbe anche consentire di installare la distribuzione Linux preferita (Ubuntu è l'impostazione predefinita) in modo da garantire la coerenza tra l'ambiente di sviluppo (in cui si scrive il codice) e l'ambiente di produzione (il server in cui viene distribuito il codice).

Nota

Gli sviluppatori che non hanno familiarità con Node.js e vogliono iniziare subito a usarlo per fare pratica possono installare Node.js in Windows. Questa raccomandazione è valida anche se si intende usare un ambiente di produzione Windows Server.

Installare WSL 2

WSL 2 è la versione più recente disponibile per Windows e la consigliamo per i flussi di lavoro di sviluppo professionali Node.js. Per abilitare e installare WSL 2, segui i passaggi descritti nella documentazione per l'installazione di WSL. Questa procedura include la scelta di una distribuzione di Linux, ad esempio Ubuntu.

Dopo aver installato WSL 2 e una distribuzione di Linux, apri la distribuzione di Linux (disponibile nel menu Start di Windows) e controlla la versione e il nome in codice usando il comando: lsb_release -dc.

Consigliamo di aggiornare regolarmente la distribuzione di Linux, anche subito dopo l'installazione, per assicurarti di disporre dei pacchetti più recenti. Windows non gestisce automaticamente l'aggiornamento. Per aggiornare la distribuzione, usa il comando: sudo apt update && sudo apt upgrade.

Installare Terminale Windows (facoltativo)

Terminale di Windows è una shell della riga di comando migliorata che consente di eseguire più schede in modo da poter passare rapidamente dalle righe di comando di Linux, al prompt dei comandi di Windows, a PowerShell, all'interfaccia della riga di comando di Azure o a qualsiasi altra opzione che si vuole usare. È anche possibile creare tasti di scelta rapida personalizzati (tasti di scelta rapida per le schede di apertura o chiusura, copia e incolla e così via), usare la funzionalità di ricerca, personalizzare il terminale con temi (combinazioni di colori, stili e dimensioni di carattere, immagine di sfondo/sfocatura/trasparenza) e altro ancora. Altre informazioni nella documentazione di Terminale Windows.

Installare Terminale Windows usando il Microsoft Store: installandolo tramite lo store, gli aggiornamenti vengono gestiti automaticamente.

Installare nvm, Node.js e npm

Oltre a scegliere se installare in Windows o in WSL, al momento dell'installazione di Node.js è necessario fare altre scelte. È consigliabile usare uno strumento di gestione delle versioni perché le versioni cambiano molto rapidamente. È probabile che sia necessario passare da una versione all'altra di Node.js in base alle esigenze dei diversi progetti su cui si sta lavorando. Node Version Manager, più comunemente denominato nvm, è il modo più comune per installare più versioni di Node.js Esamineremo in dettaglio i passaggi per installare nvm e quindi lo useremo per installare Node.js e Node Package Manager (npm). Sono disponibili anche strumenti di gestione delle versioni alternativi che verranno trattati nella sezione successiva.

Importante

È sempre consigliabile rimuovere eventuali installazioni esistenti di Node.js o npm dal sistema operativo prima di installare uno strumento di gestione delle versioni dal momento che i diversi tipi di installazione possono portare a conflitti anomali e confusi. Ad esempio, la versione di Node che può essere installata con il comando apt-get di Ubuntu è attualmente obsoleta. Per informazioni sulla rimozione di installazioni precedenti, vedi How to remove nodejs from ubuntu (Come rimuovere nodejs da Ubuntu).

Per le informazioni più aggiornate sull'installazione di NVM, consultare la sezione Installazione e aggiornamento nel repository NVM in GitHub.

  1. Aprire la riga di comando di Ubuntu (o della distribuzione scelta).

  2. Installa cURL (uno strumento usato per scaricare il contenuto da Internet nella riga di comando) con sudo apt-get install curl

  3. Installa nvm con curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash

    Nota

    L'installazione di una versione più recente di NVM con cURL sostituirà quella precedente, lasciando invariata la versione di Node usata per l'installazione di NVM. Per altre informazioni, vedere la pagina del progetto GitHub per informazioni sulla versione più recente in NVM.

  4. Per verificare l'installazione, immetti command -v nvm. Questo dovrebbe restituire "nvm", se visualizzi "command not found" (comando non trovato) o non ricevi risposta, chiudi il terminale corrente, riaprilo e riprova. Per altre informazioni, vedi il repository di GitHub nvm.

  5. Elenca le versioni di Node attualmente installate (non dovrebbero esserci in questo punto): nvm ls

    Elenco NVM che non mostra le versioni di Node

  6. Installare le versioni LTS correnti e stabili di Node.js. In un passaggio successivo, scopriremo come passare da una versione attiva di Node.js all'altra con un comando nvm.

    • Installare la versione LTS stabile corrente di Node.js (consigliata per le applicazioni di produzione): nvm install --lts
    • Installare la versione corrente di Node.js (per testare le funzionalità e i miglioramenti più recenti di Node.js, ma con una maggiore probabilità di riscontrare problemi): nvm install node
  7. Elenca le versioni di Node installate: nvm ls. Verranno ora elencate le due versioni appena installate.

    Elenco NVM che mostra le versioni di Node corrente e LTS

  8. Verifica che Node.js sia installato e la versione attualmente predefinita con node --version. Verificare quindi di avere anche npm, con: npm --version (è anche possibile usare which node o which npm per visualizzare il percorso usato per le versioni predefinite).

  9. Per cambiare la versione di Node.js che vuoi usare per un progetto, crea una nuova directory di progetto mkdir NodeTest, immetti la directory cd NodeTest, quindi immetti nvm use node per passare alla versione corrente o nvm use --lts per passare alla versione LTS. Puoi anche usare il numero specifico per tutte le versioni aggiuntive installate, ad esempio nvm use v8.2.1 (per elencare tutte le versioni di Node.js disponibili, usa il comando nvm ls-remote).

Se usi NVM per installare Node.js e NPM, non è necessario usare il comando SUDO per installare nuovi pacchetti.

Strumenti di gestione delle versioni alternativi

Sebbene nvm sia attualmente lo strumento di gestione delle versioni più diffuso per Node, esistono alcune alternative da tenere in considerazione:

  • n è un'alternativa a nvm di lunga durata che esegue la stessa operazione con comandi leggermente diversi e viene installata tramite npm anziché uno script Bash.
  • fnm è uno strumento di gestione delle versioni più recente che dovrebbe essere molto più veloce rispetto a nvm (usa anche Pipeline di Azure).
  • Volta è un nuovo strumento di gestione delle versioni del team LinkedIn che, secondo quanto dichiarato, garantisce una maggiore velocità e supporto multipiattaforma.
  • asdf-vm è una singola interfaccia della riga di comando per più linguaggi, ad esempio ike gvm, nvm, rbenv e pyenv (e altri ancora) tutto in uno.
  • nvs (Node Version Switcher) è un'alternativa multipiattaforma a nvm con possibilità di integrazione con VS Code.

Installare Visual Studio Code

Consigliamo usare Visual Studio Code con il pacchetto di estensione Remote-development per i progetti Node.js. In questo modo, VS Code viene diviso in un'architettura "client-server", con il client (l'interfaccia utente VS Code) eseguito nel sistema operativo Windows e il server (codice, Git, plug-in e così via) eseguito "in remoto" nella distribuzione Linux WSL.

Nota

Questo scenario "remoto" è leggermente diverso dal solito. WSL supporta una distribuzione Linux effettiva in cui il codice del progetto viene eseguito separatamente dal sistema operativo Windows, ma sempre nel computer locale. L'estensione Remote-WSL si connette al sottosistema Linux come se fosse un server remoto, anche se non è in esecuzione nel cloud ma sempre nel computer locale all'interno dell'ambiente WSL che è stato abilitato per l'esecuzione insieme a Windows.

Altri editor di codice, ad esempio IntelliJ, Sublime Text, Brackets e così via, funzioneranno anche con un ambiente di sviluppo Node.js WSL 2, ma potrebbero non avere gli stessi tipi di funzionalità remote offerte da VS Code. Questi editor di codice potrebbero avere problemi ad accedere alla posizione di rete condivisa di WSL (\wsl$\Ubuntu\home) e cercheranno di compilare i file di Linux usando gli strumenti di Windows, che probabilmente non è la scelta desiderata. L'estensione Remote-WSL in VS Code gestisce automaticamente questa compatibilità, con altri ambienti di sviluppo integrati potrebbe essere necessario configurare un server X. Il supporto per l'esecuzione di app GUI in WSL (ad esempio un ambiente di sviluppo integrato dell'editor di codice) sarà presto disponibile.

Gli editor di testo basati su terminale (vim, emacs, nano) sono utili anche per apportare modifiche rapide direttamente all'interno della console L'articolo Emacs, Nano o Vim: Scegliere con cura l'editor di testo basato su terminale spiega bene alcune differenze e fornisce alcune informazioni sull'uso di ciascuno di essi.

Per installare VS Code e l'estensione Remote - WSL:

  1. Scaricare e installare VS Code per Windows. VS Code è disponibile anche per Linux, ma il sottosistema Windows per Linux non supporta le app GUI, quindi deve essere installato in Windows. Non c'è bisogno di preoccuparsi, perché sarà comunque possibile integrarlo con la riga di comando e gli strumenti di Linux usando l'estensione Remote - WSL.

  2. Installare l'estensione Remote - WSL in VS Code. Questo consente di usare WSL come ambiente di sviluppo integrato e gestirà la compatibilità e il percorso per l'utente. Ulteriori informazioni.

Importante

Se VS Code è già stato installato, è necessario assicurarsi di disporre della versione 1.35 di maggio o di una versione successiva per installare l'estensione Remote - WSL. Non è consigliabile usare WSL in VS Code senza l'estensione Remote - WSL, in quanto si perderà il supporto per completamento automatico, debug, linting e così via. Curiosità: questa estensione WSL è installata in $HOME/.vscode-server/extensions.

Estensioni VS Code utili

Anche se VS Code include diverse funzionalità predefinite per lo sviluppo di Node.js, nel pacchetto di estensioni Node.js sono disponibili alcune utili estensioni da poter installare. Installale tutte o seleziona l'opzione che risulta più utile per te.

Per installare il pacchetto di estensioni Node.js:

  1. Apri la finestra Extensions (Estensioni) (Ctrl+Shift+X) in VS Code.

    La finestra Extensions (Estensioni) è ora divisa in tre sezioni, perché hai installato l'estensione Remote-WSL.

    • "Local - Installed": le estensioni installate per l'uso con il sistema operativo Windows.
    • "WSL:Ubuntu-18.04-Installed": le estensioni installate per l'uso con il sistema operativo Ubuntu (WSL).
    • "Recommended": estensioni consigliate da VS Code in base ai tipi di file nel progetto corrente.

    Estensioni di Visual Studio Code locali e remote

  2. Nella casella di ricerca nella parte superiore della finestra Estensioni immettere: Node Extension Pack (o il nome dell'estensione da cercare). L'estensione verrà installata per le istanze locali o WSL di VS Code a seconda della posizione in cui è stato aperto il progetto corrente. Lo puoi determinare selezionando il collegamento remoto nell'angolo in basso a sinistra della finestra di VS Code (in verde). Consente di aprire o chiudere una connessione remota. Installa le estensioni Node.js nell'ambiente "WSL:Ubuntu-18.04".

    Collegamento remoto di VS Code

Di seguito sono riportate alcune estensioni aggiuntive da tenere in considerazione:

  • Debugger per JavaScript: dopo aver completato lo sviluppo sul lato server con Node.js, è necessario sviluppare e testare il lato client. Questa estensione è un debugger JavaScript basato su DAP. Esegue il debug di Node.js, Chrome, Edge, WebView2, estensioni di VS Code e altro ancora.
  • Mappature tastiera di altri editor: queste estensioni possono aiutare l’utente a muoversi confortevolmente se esegue la transizione da un altro editor di testo (ad esempio Atom, Sublime, Vim, eMacs, Notepad++ e così via).
  • Sincronizzazione delle impostazioni: consente di sincronizzare le impostazioni di VS Code tra installazioni diverse usando GitHub. Usa questa estensione per garantire la coerenza dell'ambiente in computer diversi.

Configurazione di Git (facoltativo)

Per configurare Git per un progetto Node.js in WSL, vedere l'articolo Introduzione all'uso di Git nel sottosistema Windows per Linux nella documentazione di WSL.