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
30 answers
To wygląda na problem z uprawnieniami w katalogu domowym. Odzyskanie własności .npm Katalog execute:
sudo chown -R $(whoami) ~/.npm
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.
- Odinstaluj węzeł (prawdopodobnie wymagane będzie pozwolenie roota). To może Ci pomóc.
- następnie zainstaluj NVM postępując zgodnie z instrukcjami na tym strona .
- 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.
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
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
-
Musisz odblokować uprawnienia w katalogu
home
, np. Noah says:sudo chown -R `whoami` ~/.npm
-
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
-
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.
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
.
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.
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
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
-
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.
-
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.
-
Utwórz katalog dla instalacji globalnych:
mkdir ~/.npm-global
-
Skonfiguruj npm, aby używał nowej ścieżki katalogu:
npm config set prefix '~/.npm-global'
-
Otwórz lub utwórz~/.plik profilu i dodaj tę linię:
export PATH=~/.npm-global/bin:$PATH
-
Wróć do wiersza poleceń, zaktualizuj zmienne systemowe:
source ~/.profile
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.
Utwórz katalog dla globalnych pakietów
mkdir "${HOME}/.npm-packages"
Reference this directory for future use in your .bashrc/zshrc:
NPM_PACKAGES="${HOME}/.npm-packages"
Wskaż npm gdzie przechowywać Twój globalnie zainstalowany pakiet. W pliku
$HOME/.npmrc
Dodaj:prefix=${HOME}/.npm-packages
Upewnij się, że node je znajdzie. Dodaj do swojego .bashrc/zshrc:
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
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.
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/
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
-
Preferencje systemowe > Użytkownicy i grupy > (Odblokuj) > naciśnij +:
Nowe Konto > "Grupa"
Nazwa konta: nodegrpPo utworzeniu grupy zaznacz użytkownika, który ma być dołączony do tej grupy
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
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
LUBsudo -H
podczas uruchamianianpm 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ą.
Http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html
--
Q. V. zaakceptowana odpowiedź za naprawienie już wyjebanego npm
.
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
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!
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!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.
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/
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
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
-
Otwórz finder i naciśnij
cmd
+shift
+g
otworzy się go to folder z adresem url -
Napisz następującą ścieżkę
/usr/local/lib/node_modules
i naciśnij go Kliknij prawym przyciskiem myszy na folderze
node_modules
i wybierzGet Info
-
Przewiń down to
sharing & permissions
section Odblokuj, aby móc wprowadzać zmiany.
-
Naciśnij
+
i dodaj swoje konto użytkownika -
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
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!
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:
- użyj brew, aby zainstalować węzeł bez npm Update your .bash_profile/bashrc pozwala npm i node wiedzieć, gdzie zainstalować i znaleźć pakiety
- użyj brew do aktualizacji node i npm do samej aktualizacji
Mam nadzieję, że to pomoże ciekawskim!
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
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
-
Utwórz katalog dla instalacji globalnych:
mkdir ~/.npm-global
-
Skonfiguruj npm, aby używał nowej ścieżki katalogu:
npm config set prefix '~/.npm-global'
-
Otwórz lub utwórz plik
~/.profile
lub~/.bash_profile
i dodaj tę linię:export PATH=~/.npm-global/bin:$PATH
-
Z powrotem w wierszu poleceń, zaktualizuj swoje zmienne systemowe lub uruchom ponownie terminal:
source ~/.profile
-
(opcjonalnie) Test: pobierz pakiet globalnie bez użycia sudo.
npm install -g jshint
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
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
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
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
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!
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.
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}
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