Estou tentando configurar meu ambiente de nó em uma nova instância do Ubuntu 12.04, com o Nó 0.8.14 já instalado, mas tive problemas ao tentar executar npm install
. Então, quando eu tento npm install
, diz que preciso executá-lo como root ou administrador:
Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ 'DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR! 'Object.oncomplete (fs.js:297:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
Mas quando tenta executá-lo como sudo, ele diz o seguinte:
npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
No meu package.json, ele contém os seguintes scripts:
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
O restante das devdependências são válidas, pois eu instalei tudo corretamente em minha própria máquina (Mac). Alguém tem idéia de por que isso está acontecendo?
sudo npm install --unsafe-perm
no entantosudo npm install
, não, embora eu tenha adicionado"unsafe-perm":true
ao package.json ... Não sei por quê #npm install --unsafe-perm
trabalha para mim, tentei seguir as implicações sobre a alteração dauser
configuração padrão . Foi o que fiznpm set user my_user
enpm set group my_group
, que adiciona as entradas correspondentes no.npmrc
arquivo do usuário raiz . Mas o problema é que anode_modules
própria pasta e suas subpastas ainda pertencem à raiz, o que não ajuda. Eu não conseguia descobrir nenhuma maneira de fazê-los não pertencer à raiz.A única coisa que funcionou para mim foi adicionar um
.npmrc
arquivo contendo:Adicionar a mesma configuração para
package.json
não teve nenhum efeito.fonte
RUN npm set unsafe-perm true
Eu experimentei o mesmo problema ao tentar publicar meu aplicativo nodejs em um servidor privado executando o CentOs usando o usuário root. O mesmo erro é disparado por "postinstall": "./node_modules/bower/bin/bower install" no meu arquivo package.json, portanto, a única solução que estava funcionando para mim é usar as duas opções para evitar o erro:
1: use a opção --allow-root para o comando bower install
2: use a opção --unsafe-perm para o comando npm install
fonte
OP aqui, eu aprendi muito mais sobre o nó desde que fiz essa pergunta. Embora a resposta de Dmitry tenha sido muito útil, o que finalmente fez por mim é instalar o nó com as permissões corretas.
Eu recomendo não instalar o nó usando nenhum gerenciador de pacotes, mas sim compilá-lo para que ele resida em um diretório local com permissões normais.
Este artigo fornece uma instrução passo a passo muito clara de como fazer isso:
https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04
fonte
Corrigi isso alterando a propriedade
/usr/local
e~/Users/user-name
assim:sudo chown -R my_name /usr/local
Isso me permitiu fazer tudo sem
sudo
fonte