Przekroczono maksymalny rozmiar stosu wywołań podczas instalacji npm


155

Próbuję uruchomić npm install, to jest wyjście z konsoli:

npm ERR! Linux 4.8.0-27-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8

npm ERR! Maximum call stack size exceeded
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

a to jest treść npm-debug.log:

113791 verbose stack RangeError: Maximum call stack size exceeded
113791 verbose stack     at Object.color (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/console-control-strings/index.js:115:32)
113791 verbose stack     at EventEmitter.log._format (/usr/lib/node_modules/npm/node_modules/npmlog/log.js:252:51)
113791 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/log.js:138:24)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113791 verbose stack     at .<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js:23:18)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113791 verbose stack     at .<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js:23:18)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113792 verbose cwd /home/giorgi/AdMove/dev/web-advertiser-admove
113793 error Linux 4.8.0-27-generic
113794 error argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
113795 error node v6.9.1
113796 error npm  v3.10.8
113797 error Maximum call stack size exceeded
113798 error If you need help, you may report this error at:
113798 error     <https://github.com/npm/npm/issues>
113799 verbose exit [ 1, true ]

Usunięto node_moduleskilka razy i próbowałem ponownie zainstalować. Nie mogę zrozumieć, jaki jest powód tego powodu i jak to naprawić.


1
Przede wszystkim sprawdziłbym link do problemów z githubem pod kątem podobnych problemów i dodał go, jeśli nie jest to znany problem. Poza tym, dlaczego próbujesz zainstalować wersję 4.2.6? Bieżąca najnowsza kompilacja to 7.1.0, a zalecana stabilna kompilacja to wersja 6.1.0. Wyczyść wszystko, wypróbuj 6.9.1 i zaktualizuj pytanie.
TheEnvironmentalist

1
Aktualizacja do wersji 6.9.1 nadal zawiera ten sam błąd i zaktualizowane pytanie. W każdym razie dzięki TheEnvironmentalist
GROX13


w moim przypadku było to spowodowane rekurencyjną deklaracją w pliku package.json;)
Alberto S.

w moim przypadku było to spowodowane utratą połączenia internetowego
RayJ_inSJ

Odpowiedzi:


98

odpowiedź metzelder pomogła mi rozwiązać problem. jednak jeśli uruchomisz polecenie npm cache clean, otrzymasz komunikat

Począwszy od npm @ 5, pamięć podręczna npm samonaprawia się po problemach z uszkodzeniem, a dane wyodrębnione z pamięci podręcznej są prawidłowe

Tak więc od npm5 możesz to zrobić dodając --forceflagę do polecenia.

Więc polecenie brzmi:

npm cache clean --force

143
Mam nadzieję, że wiesz, co robisz.
CloudMeta

1
Jeśli chodzi o mnie to musiałem przenieść bieżący katalog roboczy do innego folderu - wygląda na to, że pomieszał npm. Usunięcie modułu node_modules i ponowna instalacja załatwiło sprawę
Philippe Hebert

10
@MetaGuru proszę wyjaśnić, jakie są konsekwencje uruchomienia tego polecenia ...
cdalxndr

3
@CTS_AE Nie sądzę, aby zespół npm dodał tę wiadomość jako żart. Musi być konsekwencja i ktoś powinien to wyjaśnić.
cdalxndr

2
@cdalxndr Mówiłem, że pozostawiono to jako komentarz jako żart / satyrę, jako bezpośredni cytat z tego, npmże tak naprawdę nie dodał niczego pomocnego, ale bardziej mema w tym momencie. Możesz przeczytać więcej o aktualnym poleceniu tutaj: docs.npmjs.com/cli-commands/cache.html wyraźnie wyjaśnia, co robi siła; że wszystkie elementy pamięci podręcznej są teraz w pełni zweryfikowane pod kątem ich integralności, jeśli coś jest uszkodzone, naprawi się samoczynnie, dlatego pamięć podręczna powinna zawsze znajdować się w odpowiednim stanie i nigdy nie być czyszczona, chyba że próbujesz odzyskać miejsce na dysku, dlatego będziesz musiał dodać --force. Uwaga: może się różnić w zależności od wersji.
CTS_AE

84

npm rebuild to rozwiązało mój problem


31
Czy ktoś może dalej wyjaśnić tę odpowiedź? Dlaczego to rozwiązuje problem?
Patrick Szalapski

3
usunięty pakiet-lock.json npm i odbudować wystarczyły dla mnie
Meet Patel

w moim przypadku niektóre pliki w moim folderze .npm zostały zainstalowane jako root. Weryfikacja pamięci podręcznej npm informuje, co jest nie tak.
kirenpillay

To załatwiło sprawę. npm cache clean nie działał przy tej okazji.
Shiva Naru

43

Spróbuj usunąć package-lock.jsoni node-modulesfolder:

rm package-lock.json
rm -r node_modules

14
Jeśli usuniesz pakiet-lock.json, zabijesz jego cel. Gwarantuje, że twoje zależności będą deterministyczne.
Eliseu Monar dos Santos

5
To prawda, ale jeśli nie możesz zainstalować aplikacji na, powiedzmy, innej platformie, nie masz innego wyjścia, jak to zrobić.
Marc

19

Miałem ten sam problem z npm install. Po wielu poszukiwaniach dowiedziałem się, że usunięcie .npmrcpliku lub jego zawartości (znalezionej pod adresem %USERPROFILE%/.npmrc), rozwiąże ten problem. To zadziałało dla mnie.


13
npm uninstall

npm cache clean --force

Używam tych dwóch metod, ale to nie zadziałało. Po usunięciu modułów węzłów i ponownej instalacji npm, ale to znowu nie zadziałało. Na koniec usuwam plik package-lock.json i po tym utworzę nowy plik package-lock.json

npm install

i dobrze !!!


5
Usunięcie pliku package-lock.json rozwiązało problem. Dzięki!
Ryan Wilson

11

Pokonałem ten problem, wykonując następujące czynności:

  • Usuń całą zawartość zależności npm. Możesz znaleźć domyślną lokalizację instalacji zgodnie z tym wątkiem: https://stackoverflow.com/a/5926706/1850297

  • Przed uruchomieniem npm installpolecenia proponuję uruchomićnpm cache clean --force


Wiadomość od npm cache clean: „Od npm @ 5 pamięć podręczna npm naprawia się samoczynnie po uszkodzeniach, a dane wyodrębnione z pamięci podręcznej są prawidłowe.”
Ian Grainger

7

Usunąłem

node_modules

a następnie ponownie zainstalowany przez

npm install

U mnie to zadziałało


2
dość zabawne musiałem zrestartować, mój komputer oprócz twoich kroków, aby działał, ponieważ pracuję z wsl
Avshalom



3

npm cache clean zwraca poniżej wiadomość

Począwszy od npm @ 5, pamięć podręczna npm samonaprawia się po problemach z uszkodzeniem, a dane wyodrębnione z pamięci podręcznej są prawidłowe. Jeśli chcesz się upewnić, że wszystko jest spójne, użyj zamiast tego opcji „npm cache verify”. Z drugiej strony, jeśli debugujesz problem z instalatorem, możesz npm install --cache /tmp/empty-cacheużyć tymczasowej pamięci podręcznej zamiast nukować rzeczywisty.

jeśli uruchomisz weryfikację pamięci podręcznej npm, jak określono powyżej, faktycznie uruchamia weryfikację pamięci podręcznej i czyszczenie pamięci, co rozwiązuje problem

Pamięć podręczna zweryfikowana i skompresowana (~ \ AppData \ Roaming \ npm-cache_cacache): Zweryfikowana zawartość: 6183 (447214684 bajtów) Treść zebrana bezużyteczna: 16 (653745 bajtów) Wpisy indeksu: 9633


To mi wystarczyło. Weryfikacja pamięci podręcznej npm rozwiązała problem w sposób, w jaki nie usunięto modułów node_modules. (I nie zamierzałem niszczyć pamięci podręcznej ani pakietu lock.json). Jestem całkiem pewien, że jest to problem z npm. Nie widzę, dlaczego weryfikacja pamięci podręcznej npm miałaby cokolwiek zmienić, gdyby naprawdę naprawiła się sama.
Stuart Watt

3

Ten problem może również wystąpić, jeśli próbujesz zainstalować pakiet, który nie istnieje lub jeśli próbujesz zainstalować wersję, która nie istnieje.


2

Odinstalowujesz pakiet npm i wymuszasz czyszczenie pamięci podręcznej oraz zamykasz terminal i ponownie instalujesz dowolny pakiet.

$sudo npm uninstall <package - name>
$sudo npm cache clean --force

Następnie uruchom ponownie terminal i sprawdź

Nadal nie działa, zaktualizuj zarówno npm, jak i node do najnowszej wersji


2

Jeśli żadna z tych odpowiedzi nie zadziała, może to być spowodowane tym, że używany terminal nie jest właściwy / node_modulesjest używany przez inną część komputera.

W moim przypadku nadal dżunglowałem między tym błędem (przekroczono maksymalny rozmiar stosu wywołań) a zdarzeniem błędu dostępu, gdy wykonałem plik sudo npm i.

Rozwiązaniem było zamknięcie mojego IDE (które było burzą internetową), uruchomienie npm ina podstawowym terminalu i to wszystko.


Zamknięcie edytora rozwiązało problem. (Netbeans dla mnie)
Wim Pruiksma

2

Nie jestem użytkownikiem systemu Windows , więc jeśli tak, spróbuj sprawdzić komentarz Rene Knopa .

Dla użytkowników Unix / OSX usunąłem główny plik .npmrc~/.npmrc .
Przed masz zamiar spróbować, proszę sprawdzić, czy nie ma nic konieczne tam można użyć tego polecenia, aby przynieść wszystkie treści do swojego terminalu: cat ~/.npmrc.

Jeśli masz coś takiego:

cat: /Users/$USER/.npmrc: No such file or directory

aby zapisać kopię:

cp ~/.npmrc ~/.npmrc_copy

Teraz spróbuj go usunąć (działa dla użytkowników bash: Unix / Ubuntu / OSX ...):

rm -f ~/.npmrc

To zadziałało dla mnie.
Mam nadzieję, że będzie to pomocne dla innych.


2

Rozwiązałem to w 100% Miałem ten problem z wersją gulp: 3.5.6.

Powinieneś wyczyścić pakiet-lock.js, a następnie uruchomić npm installi zadziałało



1

Próbowałem wszystkiego, aby rozwiązać ten problem na moim Macu. Myślę, że problem zaczął się, gdy już pobrałem npm z Node.js, a następnie ponownie zainstalowałem go z Homebrew, śledząc wideo Team Treehouse.

Oto, czego próbowałem:

Z https://docs.npmjs.com/misc/removing-npm

sudo npm uninstall npm -g
sudo make uninstall
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

Od Jak całkowicie odinstalować Node.js i ponownie zainstalować od początku (Mac OS X)

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

Oto, co zadziałało:

Ostatecznie jedyną rzeczą, która zadziałała, było sklonowanie repozytorium npm-reinstalacja z GitHub, które całkowicie usunęło wszystko, co związane z npm na moim Macu.

https://github.com/brock/node-reinstall

Następnie musiałem ponownie zainstalować node i npm z Node.js.


1

Nasze firmowe środowisko deweloperskie używa Artifactoryjako domyślnego rejestru dla naszych zależności NPM, a podczas uruchamiania npm installbyło to domyślne, co nie działało ... więc ręcznie określając główny rejestr npm poprzez npm install --registry https://registry.npmjs.orgnaprawę tego problemu ...


1

Napotkałem ten sam błąd, próbowałem zainstalować jest w jednym z pakietów w projekcie monorepo.

Jeśli używasz Yarn + Learna do pakowania projektu monorepo, będziesz musiał przejść do pliku package.json wewnątrz pakietu docelowego, a następnie uruchomić npm installlub npm install <package name>.


0

Miałem ten problem i wynikało to z aktualizacji mojego pliku wykonywalnego git. Przywróciłem Git-2.21.0.rc1.windows.1-64-bit i dodałem to do mojej ścieżki środowiska i naprawiłem mój problem.


0

Próbowałem wszystkiego, aby rozwiązać ten problem na moim komputerze z systemem Windows 7, takim jak

Ponowna instalacja i przebudowa npm

W końcu rozwiązałem ten mały problem z ustawieniami konfiguracji, marnując cały mój dzień.

Jak rozwiązałem ten problem

Usuwam konfiguracje specyficzne dla mojego projektu w globalnym .npmrc w lokalizacji takiej jak dysk: / Windows / Users /../. Npmrc


0

Jedyną rzeczą, która w końcu zadziałała na Macu, była aktualizacja z węzła 8.12 do 10.x przy użyciu NVM.

Odinstalowałem wszystkie inne wersje Node z NVM, następnie zainstalowałem 10.x, a potem uruchomiłem nvm alias default node , co mówi NVM, aby zawsze domyślnie korzystał z najnowszej dostępnej wersji węzła w powłoce.

Potem mój problem z ponownym ładowaniem na żywo zniknął!



0

Dla tych, którzy mają ten problem podczas tworzenia obrazu Docker za pomocą Jenkins (lub dowolnego CI), upewnij się, że package-lock.jsonjest również skopiowany do kontenera.

COPY ./src/package*.json /home/node/
RUN npm install

Dla nas instalacja faktycznie poszła dobrze, błąd wystąpił tylko podczas uruchamiania npm prune productionobrazu produkcyjnego.


Mam ten problem z npm prune i NODE_ENV nie jest ustawiony na produkcję. Rozwiązany przez usunięcie modułów node_modules i ponowne zainstalowanie npm
Eduardo

0

Jeśli domyślny rejestr npm jest czymś innym niż publiczne repozytorium npm (możesz to sprawdzić, przechodząc do pliku .npmrc lub sprawdzając konfigurację npm za pomocą poleceń npm CLI), możesz spróbować usunąć konfigurację rejestru, aby wskazywała z powrotem na publiczną repozytorium npm. Następnie biegnij npm installponownie.

Jeśli masz zależności, które nie są dostępne w publicznym repozytorium npm, spróbuj tymczasowo usunąć te zależności z pliku package.json. To pozwoli ci biegać npm install. Na koniec przywróć zależności i usuniętą konfigurację rejestru i uruchom npm installpo raz ostatni, aby zainstalować pozostałe zależności.


0

Dzisiaj napotkaliśmy ten błąd podczas uruchamiania npm prunenawet po uruchomieniu plikunpm cache clean --force .

Wersje:

node 13.8.0 
npm 6.13.6

Usunięcie również package-lock.jsondziałało dla tej sprawy. Dziękuję wam wszystkim!


0

Miałem podobny błąd. Wyśledziłem to do faktu, że npm nie był w stanie usunąć plików z folderów .bin dla folderu z linkiem npm. Więc wszedłem i rm -rf wszystkie foldery .bin z folderu z linkiem npm.

find "linked-folder" -type d -name ".bin" -print  
For all folders listed | rm -rf  

To rozwiązało problem.


0

Natknąłem się na ten sam problem, ale w moim przypadku używałem yarnod początku, ale z jakiegoś pliku readme skopiowałem npm installpolecenie i otrzymałem ten błąd. Później zdałem sobie z tego sprawęyarn add <package-name> rozwiązano problem i pakiet został zainstalowany.

To może komuś pomóc w przyszłości.


0

Poniższe kroki pomogły mi rozwiązać ten problem:

  1. Zatrzymaj wszystkie paski reakcji (np. Rozpocznij kompilację)
  2. biegać npm cache clean --force
  3. biegać npm install

0
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

działa dla mnie na Ubuntu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.