2013-08-08 13 views
87

Próbuję ustawić środowisko mojego węzła na nowej instancji Ubuntu 12.04, z już zainstalowanym Node 0.8.14, ale napotkałem problemy podczas próby uruchomienia npm install. Więc gdy próbuję npm install, to mówi, że muszę go uruchomić jako root lub Administratora:Npm instalacja nie powiodła się z "nie można uruchomić w wd"

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. 

Ale gdy próbuję uruchomić go jako sudo, to mówi, co następuje:

npm WARN cannot run in wd [email protected] npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode) 

w moim package.json, zawiera następujące skrypty:

"scripts": { 
    "preinstall": "npm install -g coffee-script node-gyp", 
    "start": "node server.js", 
    "test": "mocha --require should --compilers coffee:coffee-script --colors" 
}, 

reszta devdependencies obowiązują odkąd zostały zainstalowaniem porządku na własnym komputerze (Mac) Czy ktoś ma pojęcia, dlaczego tak się dzieje?

Odpowiedz

149

documentation mówi (również here):

If npm was invoked with root privileges, then it will change the uid to the user account or uid specified by the user config, which defaults to nobody . Set the unsafe-perm flag to run scripts with root privileges.

opcje są:

  1. Run npm install z flagą --unsafe-perm:

    [sudo] npm install --unsafe-perm 
    
  2. Dodaj unsafe-perm flagi do package.json:

    "config": { 
        "unsafe-perm":true 
    } 
    
  3. Nie używaj skryptu preinstall zainstalować globalnych modułów, zainstalować je oddzielnie, a następnie uruchomić regularne npm install bez uprawnień administratora:

    sudo npm install -g coffee-script node-gyp 
    npm install 
    

Powiązane:

+1

Przepraszam, że nie widziałem tego aż do teraz. Próbowałem wcześniej "unsafe-perm", ale to też nie działało. Problem nadal istnieje –

+6

Działa to dla mnie: 'sudo npm install --unsafe-perm', jednak' sudo npm install' nie, chociaż dodałem '" unsafe-perm ": true' do package.json ... Nie wiem, dlaczego –

+0

Co próbowałeś? –

18

Mam doświadczenie ten sam problem, gdy próbuje publikować moje nodejs aplikację w prywatnym serwerze z systemem CentOS za pomocą użytkownika root. Ten sam błąd jest wywoływany przez "postinstall": "./node_modules/bower/bin/bower install" w moim pakiecie.plik json więc jedynym rozwiązaniem, które działa dla mnie jest użycie obu opcji, aby uniknąć błędu:

1: Użyj opcji --allow root do altany zainstalować polecenie

"postinstall": "./node_modules/bower/bin/bower --allow-root install" 

2: Użycie - opcja niebezpieczne-perm dla KMP zainstalować komenda

npm install --unsafe-perm 
1

naprawiłem to przez zmianę własności /usr/local i ~/Users/user-name tak:

sudo chown -R my_name /usr/local

To pozwoliło mi robić wszystko bez sudo

4

Jedyną rzeczą, która pracowała dla mnie było dodanie pliku .npmrc zawierającą:

unsafe-perm = true 

Dodanie sam config package.json nie ma żadnych efekt.

Powiązane problemy