Onde está meu npm? Windows ou WSL?
Tags: wsl, npm, windows
Published: 2022-02-09 01:59:40

---
title: Onde está meu npm? Windows ou WSL?
published: true
date: 2020-06-10 18:33:47 UTC
tags: WSL,npm,windows,wsl
canonical_url: http://high5devs.com/2020/06/onde-esta-meu-npm-windows-ou-wsl/
---

Eu já tinha usado linux durante um tempo, não sou super especialista, e agora que voltei a usar Windows resolvi experimentar o WSL. Para quem não conhece o WSL é o _Windows Subsystem for Linux_, ou seja, na tradução literal é um subsistema windows para linux. Instalei a distribuição do Ubuntu e fui mexer um pouco! Minha ideia era ter minha aplicação node dentro do WSL enquanto uso o VSCode no windows.

A primeira coisa que fiz foi baixar o repositório do github, fácil já que temos o git ali. A segunda coisa foi rodar um _npm install_, fui direto para o diretório da minha aplicação e rodei o comando. E pronto! ERRO! ![🙁](https://s.w.org/images/core/emoji/13.1.0/72x72/1f641.png)

Você deve pensar:

> Claro que vai dar erro, você não instalou o _npm_!

É… depois pensei isso também. Mas o erro não tinha sido que o npm não estava instalado, ele reclamava de um _module_ que ele não consegui rodar, num diretório que não tava entendendo direito. Depois que lembrei que não tinha instalado o _npm,_ resolvi usar o comando _which_ para saber onde estava. E advinha?

## Onde estava meu _npm_?

[![resultado do comando which dentro do wsl, mostrando que o npm estava apontando para o diretório do Windows](http://high5devs.com/wp-content/uploads/2020/06/which-300x68.png)](http://high5devs.com/wp-content/uploads/2020/06/which.png)

Ele estava num _mount_ que é feito automaticamente para o meu diretório no Windows! Po, lindo que já faz esse mapeamento… mas eu não queria que ele pegasse o _npm_ do Windows, afinal, quero rodar as minhas aplicações usando tudo no linux ¯\_(ツ)\_/¯

## O que está acontecendo?

Por padrão, o WSL vai colocar o _path_ do windows na variável _$PATH_ do linux. Com isso, todos os diretórios que você tem mapeado no windows no PATH para rodar via linha de comando, estarão disponíveis para você no linux.

Nas versões mais novas o WSL provê uma maneira bem simples de alterar esse comportamento, ele usa um arquivo chamado _wsl.conf_ para definir algumas configurações. Esse arquivo fica dentro da sua distribuição, localizado em /etc/wsl.conf

> O arquivo não é criado por padrão, caso não exista, basta criar.

Você tem que editar esse arquivo, e adicionar a seguinte configuração:

```
[interop]
appendWindowsPath = false

```

Salve e feche o arquivo.

Para que as novas configurações façam efeito você deve reiniciar o WSL. Para isso basta rodar no cmd/Powershell do windows o comando wsl –shutdown

Se tiver feito tudo certo, ao entrar no WSL ele não terá mais o Path do Windows adicionado, e portanto não teremos influência dos programas que estavam configurados no Windows. Conseguimos verificar isso rodando novamente o comando _which npm_:

[![tela de console mostrando que o comando which npm não retorna nada, e que o npm não está instalado no linux](http://high5devs.com/wp-content/uploads/2020/06/which_after-300x89.png)](http://high5devs.com/wp-content/uploads/2020/06/which_after.png)

Veja que o comando which não retorna nada, e ao tentarmos rodar o npm ele mostra uma mensagem que não encontrou o comando.

Agora basta instalar o node/npm da maneira que achar melhor. Eu utilizo o [nvm](https://github.com/nvm-sh/nvm) para instalar e controlar as versões que uso.

Com isso você terá as instalações separadas no Windows e no WSL, podendo mexer a vontade e sem influenciar o outro.

* * *

Queria saber de você, já tem usado WSL? Passou por isso também?

Abraços

 

_Photo by [Markus Winkler](https://unsplash.com/@markuswinkler?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/search?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_

O post [Onde está meu npm? Windows ou WSL?](http://high5devs.com/2020/06/onde-esta-meu-npm-windows-ou-wsl/) apareceu primeiro em [High5Devs](http://high5devs.com).