npm wyrzuca błąd bez sudo

Właśnie zainstalowałem node i npm przez pakiet na nodejs.org i za każdym razem, gdy próbuję wyszukać lub zainstalować coś z npm rzuca następujący błąd, chyba że sudo polecenia. Mam wrażenie, że to problem z uprawnieniami? Już jestem adminem.

npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!  { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/chietala/npm-debug.log
npm ERR! not ok code 0
Author: Alisson Linneker, 2013-04-22

30 answers

To wygląda na problem z uprawnieniami w katalogu domowym. Odzyskanie własności .npm Katalog execute:

sudo chown -R $(whoami) ~/.npm
 1880
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-27 07:54:25

Uprawnienia użyte podczas instalacji Node będą wymagane przy takich czynnościach jak pisanie w katalogu npm (npm link, npm install -g, itd.).

Prawdopodobnie uruchomiłeś instalację węzła z uprawnieniami roota, dlatego globalna instalacja pakietu prosi Cię o bycie rootem.


Rozwiązanie 1: NVM

Nie hakuj z uprawnieniami, zainstaluj węzeł we właściwy sposób.

Na maszynie deweloperskiej nie powinieneś instalować i uruchamiać node z rootem uprawnienia, inaczej rzeczy takie jak npm link, npm install -g będzie potrzebował tych samych uprawnień.

NVM (Node Version Manager) pozwala na zainstalowanie Node bez uprawnień roota, a także pozwala na zainstalowanie wielu wersji Node, aby łatwo z nimi grać.. Idealny do rozwoju.

  1. Odinstaluj węzeł (prawdopodobnie wymagane będzie pozwolenie roota). To może Ci pomóc.
  2. następnie zainstaluj NVM postępując zgodnie z instrukcjami na tym strona .
  3. zainstaluj węzeł poprzez NVM: nvm install node

Teraz npm link, npm install -g nie będzie już wymagać, aby być root.

Edit: Zobacz też https://docs.npmjs.com/getting-started/fixing-npm-permissions


Rozwiązanie 2: instalacja pakietów globalnie dla danego użytkownika

Nie hakuj z uprawnieniami, instaluj Pakiety npm globalnie we właściwy sposób.

Jeśli korzystasz z systemu OSX lub Linux, możesz utworzyć katalog dedykowany dla Twój globalny pakiet oraz setup npm i node aby wiedzieć, jak znaleźć globalnie zainstalowane pakiety.

Zobacz ten świetny artykuł Aby uzyskać instrukcje krok po kroku dotyczące instalacji modułów npm globalnie bez sudo.

Zobacz także: dokumentacja npm na naprawianie uprawnień npm.

 493
Author: Yves M.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 21:37:42

Będziesz również potrzebował uprawnień do zapisu w katalogu node_modules:

sudo chown -R $USER /usr/local/lib/node_modules
 384
Author: Xilo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 15:40:00

Natknąłem się na to podczas instalacji Recess ( https://github.com/twitter/recess ) aby skompilować mój CSS dla Bootstrap 3.

Podczas instalacji:

-npm install recess -g
  1. Musisz odblokować uprawnienia w katalogu home, np. Noah says:

    sudo chown -R `whoami` ~/.npm
    
  2. Potrzebne są również uprawnienia do zapisu do katalogu node_modules, np. Xilo mówi, więc jeśli nadal nie działa, spróbuj:

    sudo chown -R `whoami` /usr/local/lib/node_modules
    
  3. Jeśli nadal widzisz błędy, możesz również potrzebować skorygować /usr/local uprawnienia:

    sudo chown -R `whoami` /usr/local
    

Należy pamiętać, że jak wskazano w tym poście /usr/local/ w rzeczywistości nie jest katalogiem systemowym, jeśli jesteś na komputerze Mac, więc ta odpowiedź jest w rzeczywistości całkowicie "bezpieczna" dla użytkowników komputerów Mac. Jeśli jednak korzystasz z Linuksa, zobacz odpowiedź Christopher Will poniżej, aby znaleźć przyjazne dla wielu użytkowników, bezpieczne (ale bardziej złożone) rozwiązanie.

 55
Author: danomarr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:27

Zmiana właściciela folderów "system-global" to hack. Na nowej instalacji skonfigurowałbym NPM tak, aby używał już zapisywalnej lokalizacji dla programów "user-global": {]}

npm config set prefix ~/npm

Następnie upewnij się, że dodałeś ten folder do swojej ścieżki:

export PATH="$PATH:$HOME/npm/bin"

Zobacz @ ErikAndreas' odpowiedź na Moduły NPM nie będą instalowane globalnie bez sudo i dłuższy przewodnik krok po kroku by @sindresorhus z również zestawami $MANPATH.

 51
Author: Joel Purra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:47

Inne odpowiedzi sugerują zmianę właścicieli lub uprawnień katalogów systemowych na konkretnego użytkownika. Bardzo mi to przeszkadza, to może stać się bardzo niezręczne i może zepsuć cały system!

Oto bardziej ogólne i bezpieczniejsze podejście, które obsługuje również wielu użytkowników.

Utwórz nową grupę dla użytkowników węzła i dodaj wymaganych użytkowników do tej grupy. Następnie Ustaw własność plików / katalogów zależnych od węzłów na tę grupę.

# Create new group
sudo groupadd nodegrp 

# Add user to group (logname is a variable and gets replaced by the currently logged in user)
sudo usermod -a -G nodegrp `logname`

# Instant access to group without re-login
newgrp nodegrp

# Check group - nodegrp should be listed as well now
groups

# Change group of node_modules, node, npm to new group 
sudo chgrp -R nodegrp /usr/lib/node_modules/
sudo chgrp nodegrp /usr/bin/node
sudo chgrp nodegrp /usr/bin/npm

# (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)

Teraz możesz łatwe instalowanie modułów jako użytkownik

npm install -g generator-angular

Niektóre moduły (grunt, altana, yo itp.) nadal będzie musiał być zainstalowany jako root. Dzieje się tak, ponieważ tworzą dowiązania symboliczne w /user / bin/.

Edit

3 lata później polecam użyć Node Version Manager. To zabezpiecza Ci dużo czasu i kłopotów.

 34
Author: Christopher Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-21 08:06:54

Uważaj!!! uważaj!!! uważaj!!!

Chown lub chmod to NIE rozwiązanie, ze względu na zagrożenie bezpieczeństwa.

Zamiast tego zrób to, zrób:

Najpierw sprawdź, gdzie npm wskazuje, jeśli zadzwonisz:

npm config get prefix

Jeśli zwracany jest /usr, możesz wykonać następujące czynności:

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

To tworzy npm-Direktory w katalogu domowym i wskazuje npm do niego.

Aby mieć te zmiany na stałe, musisz dodać polecenie export-command za Ciebie .bashrc:

echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=$PATH:~/.npm-global/bin" >> ~/.bashrc
 15
Author: suther,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-04 09:01:32

Oficjalna dokumentacja Jak naprawić npm install uprawnienia z błędem EACCES znajduje się w https://docs.npmjs.com/getting-started/fixing-npm-permissions .

Napotkałem ten problem po ponownej instalacji węzła przy użyciu instalatora .pkg na OSX. Jest tu kilka świetnych odpowiedzi, ale nie widziałem linku do npmjs.com jeszcze.

Opcja 1: Zmiana uprawnień do domyślnego katalogu npm

  1. Znajdź ścieżkę do katalog npm:

    npm config get prefix
    

Dla wielu systemów będzie to / usr / local.

Uwaga: Jeśli wyświetlana ścieżka to tylko / usr, Przełącz na opcję 2.

  1. Zmień właściciela katalogów npm na nazwę bieżącego użytkownika (Twoja nazwa użytkownika!):

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
    

    To zmienia uprawnienia podfolderów używanych przez npm i niektóre inne narzędzia (lib / node_modules, bin , oraz share ).

Opcja 2: Zmień domyślny katalog npm na inny

Czasami nie chcesz zmieniać własności domyślnego katalogu używanego przez npm (np. /usr), ponieważ może to spowodować pewne problemy, na przykład, jeśli dzielisz system z innymi użytkownikami.

Zamiast tego możesz skonfigurować npm tak, aby używał zupełnie innego katalogu. W naszym przypadku będzie to ukryty katalog w naszym domu folder.

  1. Utwórz katalog dla instalacji globalnych:

    mkdir ~/.npm-global
    
  2. Skonfiguruj npm, aby używał nowej ścieżki katalogu:

    npm config set prefix '~/.npm-global'
    
  3. Otwórz lub utwórz~/.plik profilu i dodaj tę linię:

    export PATH=~/.npm-global/bin:$PATH
    
  4. Wróć do wiersza poleceń, zaktualizuj zmienne systemowe:

    source ~/.profile
    
 12
Author: HoppyKamper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-23 20:46:22

Jakbyśmy potrzebowali więcej odpowiedzi tutaj, ale tak czy inaczej..

Sindre Sorus ma poradnikInstaluj Pakiety npm globalnie bez sudo na OS X i Linuksie opisujący jak czysto zainstalować bez bałaganu z uprawnieniami:

Oto sposób instalacji pakietów globalnie dla danego użytkownika.

  1. Utwórz katalog dla globalnych pakietów

    mkdir "${HOME}/.npm-packages"
    
  2. Reference this directory for future use in your .bashrc/zshrc:

    NPM_PACKAGES="${HOME}/.npm-packages"
    
  3. Wskaż npm gdzie przechowywać Twój globalnie zainstalowany pakiet. W pliku $HOME/.npmrc Dodaj:

    prefix=${HOME}/.npm-packages
    
  4. Upewnij się, że node je znajdzie. Dodaj do swojego .bashrc/zshrc:

    NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
    
  5. Upewnij się, że znajdziesz zainstalowane pliki binarne i strony podręcznika. Dodaj do swojego .bashrc/.zshrc:

    PATH="$NPM_PACKAGES/bin:$PATH"
    # Unset manpath so we can inherit from /etc/manpath via the `manpath`
    # command
    unset MANPATH # delete if you already modified MANPATH elsewhere in your config
    MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
    

Sprawdź npm-g_nosudo aby wykonać powyższe kroki automagicznie

Sprawdź źródło tego przewodnika , aby uzyskać najnowsze aktualizacje.

 11
Author: ptim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-25 04:06:04

Po uruchomieniu npm install-g somepackage, może pojawić się błąd EACCES z prośbą o ponowne uruchomienie polecenia jako root/Administrator. To problem z uprawnieniami.

It ' s easy to fix, open your terminal (Applications > Utilities > Terminal)

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

** zdecydowanie zalecam, aby nie używać zarządzania pakietami z sudo (sudo npm-g install something), ponieważ możesz uzyskać pewne problemy później * *

Odniesienie: http://foohack.com/2010/08/intro-to-npm/

 8
Author: Juancarlos Rodríguez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-12 06:53:03

For Mac (zaadoptowany z odpowiedzi Christopera Will ' A)

Mac OS X 10.9.4

  1. Preferencje systemowe > Użytkownicy i grupy > (Odblokuj) > naciśnij +:

    Nowe Konto > "Grupa"
    Nazwa konta: nodegrp

    Po utworzeniu grupy zaznacz użytkownika, który ma być dołączony do tej grupy

  2. Sudo chgrp-R nodegrp /usr/local/lib/node_modules/
    sudo chgrp nodegrp / usr / bin / node
    sudo chgrp nodegrp/usr/bin / npm
    sudo chown-r $(whoami): nodegrp ~/.npm

 7
Author: ken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 05:16:39

TL;DR

Zawsze używaj sudo -i LUB sudo -H podczas uruchamiania npm install do instalowania pakietów globalnych.

--

Podczas używania npm pobiera pakiety do katalogu domowego użytkownika. Gdy uruchamiasz jako sudo, npm instaluje pliki w tym samym katalogu, ale teraz są one własnością roota.

Więc tak dzieje się absolutnie każdej osobie, która kiedykolwiek użyła npm: {]}

  • instalowanie niektórych lokalnych pakietów bez problemów przy użyciu npm install foo
  • zainstaluj pakiet globalny używając sudo install -g foo-cli bez problemu
  • próba instalacji lokalnego pakietu z npm install bar
  • denerwuj się na projektantów npm Teraz, gdy musisz iść chmod ponownie katalog

Gdy użyjesz opcji -i lub -H W sudo, katalog domowy będzie katalogiem domowym root. Wszystkie globalne instalacje będą buforować pakiety do /root/.npm zamiast plików należących do root W /home/me/.npm.

Po prostu Zawsze używaj sudo -i LUB sudo -H podczas uruchamiania npm install aby zainstalować pakiety globalne i twoje problemy z uprawnieniami npm znikną.

Na dobre.

Http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html

-- Q. V. zaakceptowana odpowiedź za naprawienie już wyjebanego npm.

 6
Author: rich remer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 17:16:28

Miałem podobny problem przy moduły NPM nie będą instalowane globalnie bez sudo, problem polegał na tym, że Kiedy zainstalowałem node zrobiłem to z sudo przez chris/lea PPA repo.

Moim rozwiązaniem było odinstalowanie node, a następnie zainstalowanie go w ten sposób:

Pobierz najnowsze stabilne źródła węzłów z nodejs.org # w moim przypadku node-v0. 10. 20.smoła.gz

Tar-zxf node-v0. 10. 20.smoła.gz # uncompress sources

Cd node-v0. 10. 20 #enter uncompressed folder

Sudo chown $USER-R / usr / local

./configure --prefix= / usr / local && make & & make install

PD: jeśli nie chcesz zmieniać własności folderu /usr/local, możesz zainstalować go w miejscu, które już posiadasz. Problem tego podejścia polega na tym, że będziesz musiał powiązać folder instalacyjny z wierszem poleceń bash, abyśmy mogli później użyć polecenia node

Mkdir ~ / opt

./configure --prefix=~ / opt & & make & & make install

Echo ' export PATH=~ / opt / bin:${PATH}'>>~/.bashrc # lub ~/.profil lub ~/.bash_profile lub ~/.zshenv w zależności od aktualnego systemu operacyjnego

Z jednym z tych podejść, będziesz w stanie wykonać następujące czynności bez użycia sudo

Npm install-g module_to_install

 5
Author: HeberLZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:36

W moim przypadku, to z powodu zgody ~/tmp.So ja:

sudo chown -R $USER ~/tmp

I jest OK!

 5
Author: bnPYSse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-27 22:52:47

Dla mnie wykonaj tylko

sudo chown -R $(whoami) ~/.npm
Nie działa. Wtedy też wykonuję
sudo chown -R $(whoami) /usr/lib/node_modules/
sudo chown -R $(whoami) /usr/bin/node
sudo chown -R $(whoami) /usr/bin/npm
I wszystko działa dobrze!
 3
Author: user3753202,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-15 01:16:35

Problem: Nie masz uprawnień do zapisu do katalogów, których npm używa do przechowywania globalnych pakietów i poleceń.

Rozwiązanie: Zezwalaj na npm.

Otwórz terminal:

Command + spacja następnie wpisz 'terminal'

Wpisz to polecenie:

Sudo chown-r $(whoami) $(npm Config get prefix)/{lib / node_modules,bin,share}

  • uwaga: będzie to wymagało hasła.

To rozwiązanie pozwala uprawnienie tylko do katalogów potrzebnych, zachowując inne katalogi ładne i bezpieczne.

 3
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-06 19:11:11

Na Mac OS X, podczas instalacji z Homebrew ' s brew install npm, ścieżka instalacji to /usr/local/share/npm/ z podfolderami bin/ i lib/node_modules/.

Uruchomienie tego polecenia w celu zmiany właściciela na aktualnie zalogowanego użytkownika powinno naprawić to wszystko i pozwolić na zainstalowanie globalnych pakietów NPM Bez sudo.

sudo chown -R $USER ~/.npm /usr/local/share/npm/

Osx homebrew

 2
Author: Joel Purra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-28 07:15:30

Tak rozwiązałem problem w Windows 8.1:

  • Przejdź do instalacji nodejs (Zwykle C:\Program Files\nodejs)
  • Kliknij prawym przyciskiem myszy folder node_modules i przejdź do właściwości
  • Kliknij kartę Bezpieczeństwo i zaawansowane
  • u góry zobaczysz "Owner: SYSTEM", kliknij Zmień
  • wprowadź użytkownika, dla którego chcesz mieć uprawnienia i kliknij Ok
  • Zaznacz pole na dole opcji Ustawienia zaawansowane " Zamień wszystkie wpisy uprawnień obiektów potomnych na dziedziczone wpisy uprawnień z tego obiektu " i kliknij ok
  • wykonaj dowolną instalację/aktualizację npm
 2
Author: KCaradonna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-03 14:26:36

W przypadku, gdy sudo chown -R $(whoami) ~/.npm nie działa dla Ciebie, lub potrzebujesz rozwiązania non terminal command.

Problem polega na tym, że Twoje konto użytkownika nie ma uprawnień do zapisu do folderu node_modules, więc możesz wykonać następujące czynności

  1. Otwórz finder i naciśnij cmd + shift + g otworzy się go to folder z adresem url

  2. Napisz następującą ścieżkę /usr/local/lib/node_modules i naciśnij go

  3. Kliknij prawym przyciskiem myszy na folderze node_modules i wybierz Get Info

  4. Przewiń down to sharing & permissions section

  5. Odblokuj, aby móc wprowadzać zmiany.

  6. Naciśnij + i dodaj swoje konto użytkownika

  7. Upewnij się, że wybierzesz Read & Write z listy rozwijanej przywilej

Teraz powinieneś być w stanie instalować pakiety bez sudo i problemy z uprawnieniami powinny zostać rozwiązane

 2
Author: Amr Labib,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 05:22:39

Właściwie to też miałem ten sam problem. Używałem Ubuntu. Mój problem pojawia się, ponieważ zgubiłem swój klucz publiczny Ubuntu. Nawet aktualizacja mojego systemu nie miała miejsca. To był błąd GPG. W takim przypadku możesz odzyskać klucz, używając tego polecenia:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>

Po tym npm działa dobrze!

 1
Author: sam100rav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-13 12:42:44

John Papa wskazuje na historię i rozumowanie stojące za tym problemem i daje solidną poprawkę :

John Papa ' s steps are to:

  1. użyj brew, aby zainstalować węzeł bez npm
  2. Update your .bash_profile/bashrc pozwala npm i node wiedzieć, gdzie zainstalować i znaleźć pakiety
  3. użyj brew do aktualizacji node i npm do samej aktualizacji

Mam nadzieję, że to pomoże ciekawskim!

 1
Author: theship,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-10 18:12:08

Jeśli podczas instalacji npm pojawi się coś takiego jak poniżej lub chcesz zainstalować pakiety globalnie na Macu użyj Sudo

Npm ERR! kod EACCES
npm ERR! errno -13
npm ERR! syscall access

 1
Author: Ignatius Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-09 14:25:46

Problem: ty (użytkownik) nie masz odpowiednich uprawnień do katalogu.

Natychmiastowym wyjściem jest uruchomienie instalacji npm przy użyciu sudo, ale może to spowodować ten sam błąd lub niewłaściwą instalację.

A zmiana własności katalogu nie jest dobrą opcją, tymczasową łatką.


Rozwiązanie/sugestia : Zmiana domyślnego katalogu npm (z oficjalnego docs)

Utwórz kopię zapasową komputera przed przeprowadzką naprzód.

(opcjonalnie) w przypadku błędnej instalacji, najpierw ją Odinstaluj:

npm uninstall <package-name>  # use sudo if you used it while installation
npm cache verify  # or, npm cache clean for npm version below 5.x.x 
  1. Utwórz katalog dla instalacji globalnych:

    mkdir ~/.npm-global

  2. Skonfiguruj npm, aby używał nowej ścieżki katalogu:

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

  3. Otwórz lub utwórz plik ~/.profile lub ~/.bash_profile i dodaj tę linię:

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

  4. Z powrotem w wierszu poleceń, zaktualizuj swoje zmienne systemowe lub uruchom ponownie terminal:

    source ~/.profile

  5. (opcjonalnie) Test: pobierz pakiet globalnie bez użycia sudo.

    npm install -g jshint

 1
Author: Nabeel Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-26 11:09:23

Jeśli zmiana uprawnień dla katalogu /usr/local/lib/npm_modules nie pomaga, należy dodać użytkownika do grupy (w większości przypadków jest to grupa staff), która ma prawa rwx do katalogu /usr/bin. Ponieważ npm próbuje zrobić symlink z /usr/bin/__package__.

P. S. nie zapomnij o ponownym zalogowaniu po zmianie grupy użytkowników

 0
Author: Victor Perov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-25 18:13:17

To jest rozwiązanie, które wykorzystałem i pracowałem. Próbowałem używać whoami nigdy nie zadziałało.

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

Then

sudo chown -R $USER /usr/local/bin/npm

Then

sudo chown -R $USER /usr/local/bin/node

 0
Author: Casey Robinson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-12 14:59:43

Kolejna świetna poprawka tutaj aby poprawnie skonfigurować NPM, uruchom następujące polecenia:

npm config set prefix '~/.npm_packages'
PATH=$PATH:$HOME/.npm_packages/bin; export PATH
 0
Author: Guillaume Le Mière,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-25 12:50:56

@ Yves M. odpowiedź była bardzo podobna do mojego rozwiązania. Oto polecenia, których użyłem, które nieco różniły się od jego.

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

Następnie Zapytanie o najnowszą wersję:

nvm ls-remote

Następnie zainstaluj najnowszą wersję:

nvm install YOUR_VERSION_HERE

Przykład

nvm install v5.8.0
 0
Author: Ryan Loggerythm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 04:02:18

Wydaje mi się, że najlepszą opcją jest ta sugerowana w npm documentation , która polega na sprawdzeniu, gdzie domyślnie zainstalowane są globalne node_module, uruchamiając npm config get prefix. Jeśli dostaniesz, tak jak ja na Trusty, /usr, możesz zmienić go na folder, który możesz bezpiecznie posiadać, nie psując rzeczy tak, jak ja.

Aby to zrobić, wybierz lub utwórz nowy folder w systemie. Możesz chcieć mieć go w swoim katalogu domowym lub, jak ja, pod /usr/local dla spójności ponieważ jestem również użytkownikiem Mac (wolę nie szukać w różnych miejscach w zależności od maszyny, którą akurat jestem przed). Innym dobrym powodem do tego jest fakt, że folder /usr/local prawdopodobnie jest już w twojej ścieżce (chyba, że lubisz sobie pogrywać ze ścieżką), ale jest szansa, że Twój nowo utworzony folder nie jest i musisz dodać go do ścieżki samodzielnie na swojej .bash-profile lub .plik bashrc.

W skrócie, zmieniłem domyślną lokalizację z modułów globalnych z npm config set prefix '/usr/local' utworzono folder /usr/local/lib/node_modules (będzie używany przez npm) i zmieniono uprawnienia dla folderów używanych przez npm poleceniem:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Teraz możesz bezpiecznie zainstalować dowolny moduł globalnie. Mam nadzieję, że to pomoże!

 0
Author: yago,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-19 14:39:37

Nie przypisuję sobie tego rozwiązania. Podziękuj temu gościowi: https://gist.github.com/isaacs/579814

# take ownership of the folders that npm/node use
# please don't do this if you don't know what it does!
sudo mkdir -p /usr/local/{share/man,bin,lib/node,include/node}
sudo chown -R $USER /usr/local/{share/man,bin,lib/node,include/node}

# now just a pretty vanilla node install
# let it use the default paths, but don't use sudo, since there's no need
mkdir node-install
curl http://nodejs.org/dist/node-v0.4.3.tar.gz | tar -xzf - -C node-install
cd node-install/*
./configure
make install

# now the npm easy-install
curl https://www.npmjs.org/install.sh | sh

I wtedy ...

sudo chown -R web:web /home/web/api/
sudo runuser -l web -c 'npm install --prefix /home/web/api'

W ten sposób node nigdy nie działa jako root i użytkownik może zainstalować bez sudo.

 0
Author: BugHunterUK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-24 21:13:29

Możesz spróbować tego

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
 0
Author: Adeojo Emmanuel IMM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-27 08:03:18