Na instalação do npm: rejeição não tratada Erro: EACCES: permissão negada


271

Consegui corromper minha npminstalação e sempre que tento instalar pacotes usando npm install, recebo mensagens de erro ao longo destas linhas:

Erro de rejeição não tratada: EACCES: permissão negada, abra '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

Tentei reinstalar o node & npm e também tentei realocar meu cache do npm em outro lugar usando essas instruções, mas nada funciona.

Como posso fazê-lo funcionar?

Respostas:


924

Restaure a propriedade das pastas relacionadas ao npm do usuário para o usuário atual, assim:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

10
Isso funcionou para mim depois que tentei 4-5 outras coisas que não funcionaram: 1) --unsafe-perm, 2) atualização do npm, 3) reinicialização, 4) execução com sudo, etc. etc.
Alex York

2
O mesmo que @AlexYork para mim. Eu já vi meu usuário e grupo como o proprietário desses dois, mas acho que um subdiretório ou dois tinham proprietários diferentes. Obrigado!
Vedran

1
Isso funcionou para mim :), antes disso eu estava tentando este docs.npmjs.com/… . Não é possível entender se é um mesmo problema ou diferente.
Nim118 05/03/19

1
Parece que, em algum momento da minha discussão com o nó, um desses diretórios de cache foi criado com rootpropriedade. Isso consertou tudo. Obrigado!
Lonnon Foster 13/03/19

2
isso funcionou para mim, obrigado! Tentei reinstalar o npm com um gerenciador de versão de nó, recomendado pelo npm, mas não funcionou!
Winnie Phan


42

Isso acontece se a primeira vez que você executa o NPM, é com o sudo, por exemplo, ao tentar fazer uma instalação do npm -g.

As pastas de cache precisam pertencer ao usuário atual, não raiz.

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

Isso dará propriedade às pastas acima ao executar com permissões de usuário normais (não como sudo).

Também é importante notar que você não deve instalar pacotes globais usando o SUDO. Se você tiver problemas com permissões, vale a pena alterar seu diretório global. Os documentos recomendam:

mkdir ~/.npm-global

npm config set prefix '~/.npm-global'

Em seguida, atualize seu PATH em qualquer lugar que você definir (~ / .profile etc.)

export PATH=~/.npm-global/bin:$PATH

Você precisará garantir que a variável env PATH esteja definida (reiniciando o terminal ou usando o comando source)

https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally


3
Votação isso para a explicação clara de por que :)
lnoogn

Sim. Isso resolveu o problema para mim quando a "solução correta" acima não.
John Smith

Todas essas coisas devem ser abstraídas pelo npm, mas temos que lidar com isso manualmente. Você pensaria que seria de alta prioridade para os mantenedores consertar coisas assim, mas o que eu sei. Obrigado por explicar por que precisamos executar esses comandos!
YungGun 25/09/19


9

A resposta acima não funcionou para mim. Apenas tente executar seu comando com--unsafe-perm .

por exemplo

npm install -g node@latest --unsafe-perm

Isso parece resolver o problema.


@JenLim você resolveu isso ou não?
Junaid Farooq

Resolvi o problema executando o seguinte no terminal: npm cache clear-force.
Aspyn Lim


2

basta criar pastas _cache/tmpsob .npmmanualmente no local /Users/marknorgate/.npm/_cacache/tmpe executar o seu comando com acesso de administrador


2
sudo npm install --unsafe-perm=true --allow-root

Este foi o que funcionou para mim



1

Simplesmente faça sudo npm cache clean --force --unsafe-perme npm iirá normalmente.


1

mudar de propriedade

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config 

trabalhou como eu instalei o pacote usando o sudo


1

Tente usar o seguinte: Na linha de comandos, em seu diretório pessoal, crie um diretório para instalações globais:

mkdir ~/.npm-global

Configure o npm para usar o novo caminho do diretório:

npm config set prefix '~/.npm-global'

No seu editor de texto preferido, abra ou crie um arquivo ~ / .profile e adicione esta linha:

export PATH=~/.npm-global/bin:$PATH

Na linha de comandos, atualize as variáveis ​​do sistema:

source ~/.profile

Agora use o npm install, ele deve funcionar.


0

você pode tentar o seguinte comando para expo:

sudo chown -R $USER:$GROUP ~/.expo


0

Basta executar no terminal: sudo chown -R $(whoami) ~/.npm

Isso funcionou para mim !!


-1

Este funciona para mim:

sudo chown -R $(whoami) ~/.npm

Não usei o -gporque sou o único usuário. Eu usei um MacBook Air.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.