npm install -g less não funciona: EACCES: permissão negada

203

Estou tentando configurar menos no phpstorm para poder compilar arquivos .less para .css ao salvar. Instalei o node.js e a próxima etapa (de acordo com este https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) está executando este comando no diretório terminal

npm install -g less

No entanto, quando faço isso, recebo esses erros

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

Eu sou um noob completo aqui e não sei o que fazer a seguir. Qualquer ajuda será muito apreciada!

xslibx
fonte

Respostas:

354

O uso do sudo não é recomendado. Pode dar a você um problema de permissão posteriormente. Enquanto o procedimento acima funciona, não sou fã de alterar pastas pertencentes à raiz para poderem ser gravadas para os usuários, embora isso possa ser apenas um problema para vários usuários. Para contornar isso, você pode usar um grupo, com 'npm users', mas isso também é mais sobrecarga administrativa. Consulte aqui as opções para lidar com permissões da documentação: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Eu iria para a opção 2:

Para minimizar a chance de erros de permissão, você pode configurar o npm para usar um diretório diferente. Neste exemplo, será um diretório oculto na sua pasta 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'

Abra ou crie um arquivo ~ / .profile e adicione esta linha:

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

De volta à linha de comando, atualize as variáveis ​​do sistema:

 source ~/.profile

Teste: faça o download de um pacote globalmente sem usar o sudo.

npm install -g jshint

Se ainda mostrar erro de permissão, execute (mac os):

sudo chown -R $USER ~/.npm-global   

Isso funciona com a instalação padrão do ubuntu de:

sudo apt-get install nodejs npm

Eu recomendo nvmse você quiser mais flexibilidade no gerenciamento de versões: https://github.com/creationix/nvm

No MacOS, use o brew, ele deve funcionar sem uso imediato sudose você estiver em uma npmversão recente . Aproveitar :)

Vincent Gerris
fonte
Atenção - no Ubuntu 18.04 eu tive que sair e fazer login novamente antes que a alteração fosse aplicada automaticamente também em todas as novas janelas de terminal.
Alexander Nied
Alexander, você se certificou de usar o comando source? Isso deve cuidar da definição das variáveis ​​de ambiente corretas; o logout não deve ser necessário (mas funciona).
Vincent Gerris 22/10
isso não funcionou $ npm install -g jshint npm ERR! escrever após o fim npm ERR! Um log completo dessa execução pode ser encontrado em: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith
3
Thanx para este "uso fermentação sobre MacOS"
Bijender Singh Shekhawat
110

Execute estes comandos em uma janela de terminal (nota: NÃO substitua a parte $ USER ... é um comando linux para obter o seu usuário!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
Vagner Rodrigues
fonte
7
É uma boa idéia se tornar o dono das coisas /usr? E se alguém quiser instalar coisas do nó?
Mark
6
Trabalhou para mim em MacOS High Sierra, eu só precisava de um dos três comandos: sudo chown -R $USER /usr/local/lib/node_modules. @ Mark Isso é verdade, mas é claro que não há problema se você tiver apenas um usuário.
Fabian von Ellerts
@FabianvonEllerts Bem, ainda é mais fácil excluir acidentalmente arquivos do sistema, já que você não precisará mais do sudo ... Eu seguiria as práticas recomendadas mesmo quando estiver sozinho, mas é com você, é claro.
Mark
Estou com Mark, a menos que você tenha um usuário (e mesmo assim) não queira que os subdiretórios / usr sejam de propriedade de um usuário; nesse caso, use melhor o grupo. Mas talvez ainda melhor, basta usar o brew como mencionei na minha resposta, ele funcionará sem raiz fora da caixa.
Vincent Gerris
11

Reinstale o nó e o npm com o Node Version Manger (conforme escrito na documentação do npm ) para evitar erros de permissão:

No OSX:

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

ou siga este artigo:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Os usuários do Windows devem instalar o nvm-windows . Para obter ajuda adicional sobre como instalar o nvm, consulte o leia-me do nvm .

Então escolha por exemplo:

nvm install 8.0.0
nvm use 8.0

Agora você pode tentar outra vez:

npm install -g less
gazdagergo
fonte
1
Usei isso para resolver problemas de permissão na instalação de pacotes no CodeSandbox.
Keith Taylor
11

Resposta para Mac OS X

Você não tem acesso de gravação ao diretório node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Adicione seu usuário ao diretório com acesso de gravação

  1. Pasta aberta contendo node_modules

    abra / usr / local / lib /

  2. Faça um cmd + I na pasta node_modules para abrir a caixa de diálogo de permissão
  3. Adicione seu usuário para ter acesso de leitura e gravação na seção de compartilhamento e permissões insira a descrição da imagem aqui
Roderick Jonsson
fonte
A solução mais fácil e mais eficiente para o MacOS
itsazzad 26/06
8

insira a descrição da imagem aquiUse sudo -i para alternar para $ root e execute o npm install -g xxxx

user3393929
fonte
7

Para o meu ambiente mac

sudo chown -R $USER /usr/local/lib/node_modules

resolver o problema

Asadut Zaman
fonte
Acredito que isso já esteja coberto na resposta de @ VagnerRodrigues acima.
entpnerd
Sim, é, acabei de mencionar para o ambiente mac
Asadut Zaman
3

Basta pressionar o comando abaixo:

sudo chown -R $USER /usr/local/lib/node_modules

Vamos dividir:

sudo

significa que estamos executando este comando como root, o superusuário do sistema. Isso ocorre porque não temos permissão para gravar nessa pasta, mas o root poderá corrigir qualquer permissão. Este comando também significa que o sistema solicitará sua senha para confirmar.

chown

é o comando que usamos para alterar o proprietário de um arquivo ou pasta. Definimos a opção -R para alterar o proprietário recursivamente, para que também tenhamos acesso a todos os arquivos já contidos nele.

$ USER

é uma variável de ambiente definida automaticamente como seu nome de usuário.

E a peça final é o caminho da pasta.

A execução desse caminho tornará a pasta sua, para que você possa executar com segurança seus comandos npm install -g!

Akash Singh Sengar
fonte
0

Eu tentei todas as soluções sugeridas, mas nada funcionou.

Estou usando o macOS Catalina 10.15.3

Vá para / usr / local /

Selecione a pasta bin> Obter informações

Adicione seu usuário ao compartilhamento e permissões. Permissões de leitura e gravação. insira a descrição da imagem aqui

E vá para o terminal e execute npm install -g @ ionic / cli

Isso me ajudou.

Gohar SUltan
fonte
-1

No linux, certifique-se de obter toda a autoridade com:

sudo su
kira
fonte
-3

Oi, eu estou usando o Ubuntu 18 e também recebi essa mensagem de erro ao instalar o Prisma, então apenas adiciono sudona frente

sudo npm i -g prisma
UA_
fonte