React (ou Node) no Windows com WSL

Como utilizar o WSL para rodar aplicações Nodejs e React no Windows.

React (ou Node) no Windows com WSL
Photo by Miti / Unsplash

Se você tem Windows e usa React (ou qualquer outra lib/framework que dependa do Nodejs) e já teve algum problema com o ambiente Node.js no Windows ou mesmo tem a curiosidade de utilizar o WSL (Windows subsystem for linux), esse post vai te ajudar a configurar essa ferramenta incrível que é o WSL.

Instalando WSL 🖥

Vamos começar habilitando o WSL no nosso Windows, para isso vamos executar o seguinte comando no PowerShell (execute como administrador):

⚠️ O windows precisa estar atualizado.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

⚠️ Ative o recurso de virtualização na BIOS

Para continuar, você precisa ativar o recurso de virtualização (VT-d) na BIOS do seu dispositivo.
O nome varia bastante, então consulte o guia da marca e modelo do seu dispositivo.

Agora vamos habilitar o recurso de máquina virtual no Windows, basta executar o seguinte comando:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

⚠️ Em seguida, reinicie o sistema para continuar.

(caso você não reinicie, você não conseguirá instalar o arquivo abaixo).
Após reiniciar o sistema, baixe esse instalador e execute.

E por fim, vamos definir o WSL 2 como padrão quando baixarmos novas imagens linux:

wsl --set-default-version 2

Escolhendo imagem Linux 🐧

Temos algumas imagens linux para escolher, vamos até a Windows Store e pesquise por "Linux" e escolha a que você preferir.

Windows Store


Após escolher, basta baixar e seguir o passo a passo de instalação (que é bem simples)

Windows Terminal 💻

Windows Terminal


Vamos agora instalar o Windows Terminal, é um passo opcional, mas super legal, além de bonito, tem ótimas funcionalidades.
Para isso, basta irmos até a Windows Store novamente e pesquisarmos por "Windows Terminal", vamos baixar e instala-lo.

Windows terminal Windows Store


Após instalar, vamos configura-lo para abrir a aba da nossa máquina Linux:

Windows terminal tabs


Para isso, clique na seta ao lado das abas e vá em "configurações", vamos até a categoria "Perfis" e clique em "Adicionar novo". Na tela que irá se abrir, vamos preencher o campo "Linha de comando" com o nome do executável do nosso subsistema Linux.

Windows Terminal Settings


Para descobrir o nome do executável, podemos iniciar o nosso Linux e em seguida abrir o gerenciador de tarefas, encontrar o processo e clicar com botão direito do mouse sobre ele e escolher a opção "Abrir local do arquivo", em seguida basta copiar o nome do executável e colar no campo anterior.

Task manager


O Windows terminal irá identificar automaticamente o nome e ícone do sistema, bastando apenas clicar em "Salvar" agora.

Configurando ambiente no Linux 🛠

Agora vamos para o nosso sistema Linux, apara isso, execute o Windows Terminal e abra uma nova aba com o seu Linux.
Vamos começar instalando o Nodejs, para isso podemos utilizar o NVM para facilitar e para gerenciar as versões do Node na nossa máquina.
Vamos começar executando o seguinte comando:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

Após baixar, precisamos recarregar nosso arquivo bashrc para que o comando "nvm" seja reconhecido, para isso, execute:

source ~/.bashrc

Agora, podemos rodar o comando para listar as versões do node disponiveis para nós, rode:

nvm ls-remote

E teremos como resultado a lista de versões que podemos instalar, busque sempre uma versão LTS e mais recente, no meu caso é a 14.16.1.

Nvm list


Para instalar a versão mais recente (altere para a sua versão caso seja diferente), execute o comando:

nvm install 14

E para testarmos, basta executarmos:

node -v
# e
npm -v

Iniciar novo projeto com o CRA ⚛️

Dentro do nosso Linux, vamos criar um novo projeto React, vamos navegar até a pasta que desejar, no meu caso Documents e executar o comando:

npx create-react-app meuAppTest

Caso você já tenha o Visual Studio Code instalado, basta digitar code . dentro da pasta do projeto e o VSCode irá abrir com o projeto já carregado.
Agora, vamos rodar o projeto:

npm start
Npm start


Com o projeto rodando, podemos perceber que o hot reloading não está funcionando.
Isso por que o React utiliza o chokidar para monitorar os arquivos que são modificados, e por padrão ele vem com a opção de polling desativado, desta forma não conseguimos notificar essas alterações entre o Windows e o nosso subsistema.
Para resolver, vamos no nosso package.json e na parte dos scripts vamos substituir o script de start para o seguinte:


  "scripts": {
    "start": "CHOKIDAR_USEPOLLING=true react-scripts start",
    ...
  },

Com o polling ativado, pare o servidor e rode novamente.

React Windows

Algumas coisas a mais 🍉

Aqui vai algumas dicas bem legais para melhorar ainda mais a experiência: