Resolvendo o problema de instalação do node-sass 4.14.1 no MacBook Air M1
Published: 2023-07-05 02:35:52



**Introdução:**
Ao instalar as dependências de um projeto no MacBook Air M1, me deparei com o erro de incompatibilidade do `node-sass` com a arquitetura arm64. Neste artigo, vou compartilhar os passos que podem ser seguidos para superar esse problema e permitir que você execute seu projeto em sua máquina com sucesso.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjm28jy0i4wm79mp1yjz.png)

**Passo a passo:**

**1. Instale as bibliotecas Python:**
Como pré-requisito, instale as bibliotecas Python 2.7 e Python 3.11 utilizando o Homebrew. Isso pode ser feito com os seguintes comandos no terminal:

```shell
brew install python@2
brew install python@3.11
```

**2. Instale o NVM:**
O NVM (Node Version Manager) permitirá que você instale e gerencie diferentes versões do Node.js. Para instalá-lo, execute o seguinte comando no terminal:

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

Após a instalação, feche e reabra o terminal para que as alterações tenham efeito.

**3. Utilize o Rosetta 2:**
O Rosetta 2 é uma tecnologia que permite executar aplicativos projetados para arquiteturas Intel em sistemas Apple Silicon. Para usar o Rosetta 2 no terminal, siga as etapas abaixo:

- Abra o Finder e vá para "Ir" > "Utilitários".
- Selecione o aplicativo Terminal.
- Clique com o botão direito do mouse no aplicativo Terminal e selecione "Obter Informações".

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kt3cbfccwolu83djzxip.png)

- Marque a opção "Abrir usando Rosetta" e feche a janela.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fvurodcdg70ntwx25xl0.png)

Para verificar a arquitetura atual do seu terminal, execute o comando `arch` no seu terminal. A saída esperada será "arm64", indicando que o terminal está configurado para a arquitetura nativa do Apple Silicon.


Em seguida, para alternar temporariamente para a arquitetura Intel x86_64, execute o comando `arch -x86_64 zsh` no terminal. Isso abrirá um novo shell usando a arquitetura Intel x86_64.

Novamente, execute o comando `arch` para verificar a arquitetura atual. Desta vez, a saída esperada será "i386", indicando que o terminal está configurado para a arquitetura Intel x86_64.
```shell
arch
```

Agora, o seu terminal está pronto para executar programas que não são compatíveis com a arquitetura arm64. Isso permite que você instale e execute dependências, como o `node-sass`, que exigem a arquitetura Intel em vez da arquitetura nativa do Apple Silicon.

Lembre-se de que essa configuração é temporária e se aplica apenas à sessão atual do terminal. Quando você fechar o terminal ou abrir um novo, ele voltará à arquitetura nativa do Apple Silicon, a menos que você execute novamente o comando `arch -x86_64 zsh`.

Agora, você pode executar comandos para arquiteturas Intel usando o terminal.

**4. Instale o Node.js versão 14:**
O `node-sass` é compatível apenas com o Node.js versão 14. Utilize o NVM para instalar essa versão específica com o seguinte comando:

```shell
nvm install 14
```

**5. Instale as dependências do projeto e execute-o:**
Após a instalação do Node.js versão 14, navegue até o diretório do seu projeto e instale as dependências utilizando o npm ou yarn. Em seguida, execute o projeto normalmente.

**Observação:**
Se você enfrentar problemas de memória ao executar o projeto, como no meu caso, onde precisei executar o seguinte comando: `NODE_OPTIONS="--max_old_space_size=4096" npm run start`. Isso aumentará o limite de memória alocada para o projeto.

**Conclusão:**
Ao seguir os passos mencionados acima, você poderá resolver o problema de instalação do `node-sass` em um MacBook Air M1. Com a instalação adequada das bibliotecas Python, utilização do Rosetta 2 e a versão correta do Node.js, você será capaz de executar seu projeto sem problemas. Lembre-se de adaptar os comandos de acordo com sua situação específica. Aproveite a compilação eficiente de arquivos Sass em seu projeto com o `node-sass`!