Die maximale Größe des Aufrufstapels wurde bei der Installation von npm überschritten

152

Ich versuche zu laufen npm install, dies wird von der Konsole ausgegeben:

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>

und das ist Inhalt von 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 ]

Entfernt node_modulesmehrmals und versuchte erneut zu installieren. Ich kann nicht verstehen, was der Grund dafür ist und wie man es behebt.

GROX13
quelle
1
Zunächst überprüfe ich den Link zu Github-Problemen auf ähnliche Probleme und füge ihn hinzu, wenn es sich nicht um ein bekanntes Problem handelt. Warum versuchen Sie auch, v4.2.6 zu installieren? Der aktuellste Build ist v7.1.0 und der empfohlene stabile Build ist v6.9.1. Löschen Sie alles, versuchen Sie 6.9.1 und aktualisieren Sie die Frage.
TheEnvironmentalist
1
Aktualisiert auf v6.9.1 hat immer noch den gleichen Fehler und die aktualisierte Frage auch. Danke trotzdem TheEnvironmentalist
GROX13
1
Einige Ratschläge hier github.com/npm/npm/issues/10776
Boris Charpentier
In meinem Fall wurde dies durch eine rekursive Deklaration in package.json verursacht;)
Alberto S.
In meinem Fall wurde es verursacht, weil ich die Internetverbindung verloren hatte
RayJ_inSJ

Antworten:

96

Die Antwort von Metzelder hat mir geholfen, das Problem zu beheben. Wenn Sie den Befehl jedoch ausführen npm cache clean, erhalten Sie eine Nachricht

Ab npm @ 5 heilt sich der npm-Cache selbst von Korruptionsproblemen und die aus dem Cache extrahierten Daten sind garantiert gültig

Ab npm5 können Sie --forcedem Befehl also ein Flag hinzufügen .

Der Befehl lautet also:

npm cache clean --force
Djangodude
quelle
142
Ich hoffe, Sie wissen, was Sie tun.
CloudMeta
1
Ich hatte das aktuelle Arbeitsverzeichnis in einen anderen Ordner verschoben - es scheint, als wäre es npm durcheinander. Das Löschen von node_modules und die Neuinstallation haben es geschafft
Philippe Hebert
10
@MetaGuru Bitte erläutern Sie die Konsequenzen der Ausführung dieses Befehls ...
cdalxndr
3
@CTS_AE Ich glaube nicht, dass das npm-Team diese Nachricht als Witz hinzugefügt hat. Es muss eine Konsequenz geben und jemand sollte es erklären.
cdalxndr
2
@cdalxndr Ich sagte, dass es als Kommentar als Witz / Satire hinterlassen wird, als direktes Zitat von npmer fügte nicht wirklich etwas Hilfreiches hinzu, sondern eher ein Mem an dieser Stelle. Weitere Informationen zum eigentlichen Befehl finden Sie hier: docs.npmjs.com/cli-commands/cache.html Es wird explizit erklärt, was Force bewirkt. dass alle Cache-Elemente jetzt vollständig auf ihre Integrität überprüft werden. Wenn etwas beschädigt ist, heilt es sich selbst. Daher sollte der Cache immer in einem ordnungsgemäßen Zustand sein und niemals gelöscht werden, es sei denn, Sie versuchen, Speicherplatz zurückzugewinnen. Daher müssen Sie ihn anhängen --force. Hinweis: Kann je nach Version variieren.
CTS_AE
82

npm rebuild es hat mein Problem gelöst

JJJ
quelle
30
Kann jemand diese Antwort weiter erklären? Warum löst dies das Problem?
Patrick Szalapski
3
gelöschte package-lock.json und npm Neuerstellung haben den Trick für mich getan
Treffen Sie Patel
In meinem Fall wurden bestimmte Dateien in meinem .npm-Ordner als root installiert. npm cache verify sagt Ihnen, was falsch ist.
Kirenpillay
Das hat den Trick gemacht. npm cache clean funktionierte bei dieser Gelegenheit nicht.
Shiva Naru
41

Versuchen Sie, package-lock.jsonden node-modulesOrdner zu entfernen :

rm package-lock.json
rm -r node_modules
Марат Зимнуров
quelle
14
Sie beenden den Zweck von package-lock.json, wenn Sie es löschen. Es garantiert, dass Ihre Abhängigkeiten deterministisch sind.
Eliseu Monar dos Santos
4
Stimmt, aber wenn Sie Ihre App nicht auf einer anderen Plattform installieren können, haben Sie keine andere Wahl, als dies zu tun.
Marc
19

Ich hatte das gleiche Problem mit npm install. Nach langem Suchen habe ich herausgefunden, dass das Entfernen Ihrer .npmrcDatei oder ihres Inhalts (gefunden unter %USERPROFILE%/.npmrc) dieses Problem lösen wird. Das hat bei mir funktioniert.

Arwa S k
quelle
13
npm uninstall

npm cache clean --force

Ich benutze diese beiden Methoden, aber es hat nicht funktioniert. Nachdem ich Knotenmodule gelöscht und erneut npm installiert habe, hat es aber nicht mehr funktioniert. Zuletzt lösche ich package-lock.json und erstelle danach eine neue package-lock.json-Datei mit

npm install

und okay !!!

Kerim Kuşcu
quelle
5
Das Löschen der Datei package-lock.json hat das Problem für mich behoben. Danke!
Ryan Wilson
11

Ich habe dieses Problem folgendermaßen gelöst:

  • Löschen Sie den gesamten Inhalt der npm-Abhängigkeiten. Sie finden den Standardinstallationsort gemäß diesem Thread: https://stackoverflow.com/a/5926706/1850297

  • Bevor Sie den npm installBefehl ausführen , empfehle ich, ihn auszuführennpm cache clean --force

metzelder
quelle
Nachricht von npm cache clean: "Ab npm @ 5 heilt sich der npm-Cache von Korruptionsproblemen selbst und die aus dem Cache extrahierten Daten sind garantiert gültig."
Ian Grainger
7

Ich löschte

Knotenmodule

und dann von neu installiert

npm installieren

Es hat bei mir funktioniert

Umair Khalid
quelle
2
lustig genug, dass ich neu starten musste, mein Computer zusätzlich zu Ihren Schritten, damit es funktioniert, da ich mit wsl arbeite
Avshalom
7

In meinem Fall auf die neueste Version aktualisieren:

npm install -g npm

AvantContra
quelle
5

Ich habe npm rebuildes einfach wie Charme funktioniert.

Gopi P.
quelle
3

npm cache clean kehrt unter der Nachricht zurück

Ab npm @ 5 heilt sich der npm-Cache selbst von Korruptionsproblemen und die aus dem Cache extrahierten Daten sind garantiert gültig. Wenn Sie sicherstellen möchten, dass alles konsistent ist, verwenden Sie stattdessen 'npm cache verify'. Wenn Sie dagegen ein Problem mit dem Installationsprogramm debuggen, können Sie npm install --cache /tmp/empty-cacheeinen temporären Cache verwenden, anstatt den eigentlichen zu löschen.

Wenn Sie die npm-Cache-Überprüfung wie oben angegeben ausführen, werden die Cache-Überprüfung und die Speicherbereinigung ausgeführt, wodurch das Problem behoben wird

Cache überprüft und komprimiert (~ \ AppData \ Roaming \ npm-cache_cacache): Inhalt überprüft: 6183 (447214684 Byte) Inhalt müllsammelbar: 16 (653745 Byte) Indexeinträge: 9633

Synster
quelle
Das hat mir gereicht. npm cache verify hat das Problem so behoben, dass das Entfernen von node_modules dies nicht tat. (Und ich wollte den Cache oder die package-lock.json nicht zerstören). Ich bin mir jedoch ziemlich sicher, dass dies ein Problem mit npm ist. Ich kann nicht sehen, warum die Überprüfung des npm-Cache etwas ändern würde, wenn es sich wirklich selbst heilen würde.
Stuart Watt
3

Dieses Problem kann auch auftreten, wenn Sie versuchen, ein nicht vorhandenes Paket zu installieren, oder wenn Sie versuchen, eine nicht vorhandene Version zu installieren.

Melchia
quelle
2

Sie deinstallieren das npm-Paket und erzwingen die Bereinigung des Caches, schließen das Terminal und installieren das jeweilige Paket neu.

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

Starten Sie dann das Terminal neu und überprüfen Sie es

Das Upgrade von npm und node auf die neueste Version funktioniert immer noch nicht

Gajendra KS
quelle
2

Falls keine dieser Antworten für Sie funktioniert, kann dies daran liegen, dass das von Ihnen verwendete Terminal nicht das richtige ist / Ihr Terminal node_modulesvon einem anderen Teil Ihres Computers verwendet wird.

In meinem Fall habe ich zwischen diesem Fehler (maximale Anrufstapelgröße überschritten) und dem Zugriffsfehlerereignis, als ich a sudo npm i.

Das Update bestand darin, meine IDE (die Webstorm war) zu schließen, npm iin einem Basis-Terminal auszuführen , und das war es.

Jonathan Simonney
quelle
Das Schließen des Editors hat das Problem für mich behoben. (Netbeans für mich)
Wim Pruiksma
2

Ich bin kein Windows-Benutzer . Wenn ja, versuchen Sie, den Kommentar von Rene Knop zu überprüfen .

Für Unix / OSX- Benutzer habe ich die Root- Datei .npmrc entfernt~/.npmrc .
Bevor Sie es versuchen , überprüfen Sie bitte , ob dort nichts erforderlich ist. Mit diesem Befehl können Sie den gesamten Inhalt in Ihr Terminal bringen : cat ~/.npmrc.

Wenn Sie etwas haben wie:

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

um eine Kopie zu speichern:

cp ~/.npmrc ~/.npmrc_copy

Versuchen Sie nun, es zu entfernen (funktioniert für Bash-Benutzer: Unix / Ubuntu / OSX ...):

rm -f ~/.npmrc

Das hat bei mir funktioniert.
Hoffe, dass dies für andere hilfreich sein wird.

naorz
quelle
2

Ich habe es zu 100% gelöst. Ich hatte dieses Problem mit der Gulp-Version: 3.5.6.

Sie sollten die package-lock.js bereinigen und dann ausführen npm installund es funktionierte

Hidayat Arghandabi
quelle
2

Ich hatte auch das gleiche Problem. Ich hatte die vorherigen Lösungen ausprobiert, aber die Lösung war für mich viel einfacher. Ich musste nur den Speicherplatz im Verzeichnis entfernen und dann ausführennpm i erneut

Vielen Dank an: https://github.com/nodejs/node-gyp/issues/809#issuecomment-155019383 für diesen Hinweis.

pavlkara1
quelle
1

Ich habe alles versucht, um dieses Problem auf meinem Mac zu beheben. Ich denke, das Problem begann, als ich npm bereits von Node.js heruntergeladen und dann mit Homebrew neu installiert hatte, während ich einem Team Treehouse-Video folgte.

Folgendes habe ich versucht:

Von 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*

Von Wie deinstalliere ich Node.js vollständig und installiere es von Anfang an neu (Mac OS X)

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

Folgendes hat funktioniert:

Am Ende funktionierte das einzige, was für mich funktionierte, das Repo zur Neuinstallation von npm von GitHub zu klonen, das alles, was mit npm zu tun hat, auf meinem Mac vollständig entfernte.

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

Ich musste dann Node und Npm von Node.js neu installieren.

Caleb Spindler
quelle
1

Unsere Unternehmensentwicklungsumgebung wird Artifactoryals Standardregistrierung für unsere NPM-Abhängigkeiten verwendet, und beim Ausführen npm installwurde standardmäßig dies verwendet, was nicht funktioniert hat. Daher wurde npm install --registry https://registry.npmjs.orgdieses Problem manuell für mich behoben, indem die Hauptregistrierung von npm manuell angegeben wurde.

Joshua Barker
quelle
1

Ich hatte den gleichen Fehler, ich habe versucht, Jest in einem der Pakete in einem Monorepo-Projekt zu installieren.

Wenn Sie mit Yarn + Learna ein Monorepo-Projekt verpacken, müssen Sie zur Datei package.json im Zielpaket navigieren und dann npm installoder ausführen npm install <package name>.

Shrivathsa
quelle
0

Ich hatte dieses Problem und es war auf ein Upgrade meiner ausführbaren Git-Datei zurückzuführen. Ich habe ein Rollback auf Git-2.21.0.rc1.windows.1-64-Bit durchgeführt und dies meinem Umgebungspfad hinzugefügt, wodurch mein Problem behoben wurde.

Finchy70
quelle
0

Ich habe alles versucht, um dieses Problem auf meinem Windows 7-Computer wie zu beheben

Neuinstallation und Neuerstellung von npm

Endlich habe ich dieses kleine Problem mit den Konfigurationseinstellungen behoben, indem ich meinen ganzen Tag verschwendet habe.

Wie ich dieses Problem gelöst habe

Entfernen meiner projektspezifischen Konfigurationen in globaler .npmrc an einem Speicherort wie Laufwerk: / Windows / Users /../ .npmrc

Rajashekhar Reddy
quelle
0

Das einzige, was für mich auf dem Mac endlich funktioniert hat, war das Upgrade von Knoten 8.12 auf 10.x mit NVM.

Ich habe alle anderen Versionen von Node mit NVM deinstalliert, dann 10.x installiert und dann ausgeführt nvm alias default node , wodurch NVM angewiesen wird, immer die neueste verfügbare Node-Version auf einer Shell zu verwenden.

Danach verschwand mein Live-Nachladeproblem!

bildungsroman
quelle
0

Der Wechsel zu Garn löste das Problem für mich.

vgaltes
quelle
0

Wenn Sie dieses Problem beim Erstellen eines Docker-Images mit Jenkins (oder einem beliebigen CI) haben, stellen Sie sicher, dass das Image package-lock.jsonauch in den Container kopiert wird.

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

Für uns verlief die Installation tatsächlich einwandfrei. Der Fehler trat nur beim Ausführen npm prune productiondes Produktionsabbilds auf.

Adam Eri
quelle
Ich habe dieses Problem mit npm prune und NODE_ENV nicht auf Produktion gesetzt. Gelöst durch Entfernen von node_modules und erneutes Installieren von npm
Eduardo
0

Wenn Ihre Standard-npm-Registrierung etwas anderes als das öffentliche npm-Repository ist (Sie können dies überprüfen, indem Sie zu Ihrer .npmrc-Datei gehen oder Ihre npm-Konfiguration über npm-CLI-Befehle überprüfen), können Sie versuchen, die Registrierungskonfiguration zu deaktivieren, damit sie auf die Öffentlichkeit verweist npm Repository. Dann rennenpm install wieder .

Wenn Sie Abhängigkeiten haben, die nicht im öffentlichen npm-Repository verfügbar sind, versuchen Sie, diese Abhängigkeiten vorübergehend aus package.json zu entfernen. Auf diese Weise können Sie ausführen npm install. Setzen Sie abschließend die von Ihnen entfernten Abhängigkeiten und die Registrierungskonfiguration zurück und führen Sie sie npm installein letztes Mal aus, um den Rest Ihrer Abhängigkeiten zu installieren.

Xchai
quelle
0

Heute ist dieser Fehler beim Ausführen eines npm prunegeraden nach dem Ausführen eines aufgetreten npm cache clean --force.

Versionen:

node 13.8.0 
npm 6.13.6

Löschen der package-lock.jsonArbeit auch für diesen Fall. Danke euch allen!

Jeff Hampton
quelle
0

Ich hatte einen ähnlichen Fehler. Ich habe es auf die Tatsache zurückgeführt, dass npm keine Dateien aus den .bin-Ordnern für einen npm-Link-Ordner löschen konnte. Also ging ich hinein und rm -rf alle .bin-Ordner aus dem npm link'd-Ordner.

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

Damit war das Problem behoben.

nishant
quelle
0

Ich bin auf dasselbe Problem gestoßen, aber in meinem Fall habe ich es yarnvon Anfang an verwendet, aber aus einer Paket-Readme-Datei habe ich den npm installBefehl kopiert und diesen Fehler erhalten. Später stellte sich heraus, dass yarn add <package-name>das Problem behoben war und das Paket installiert wurde.

Es könnte in Zukunft jemandem helfen.

necixy
quelle
0

Die folgenden Schritte haben mir geholfen, dieses Problem zu lösen:

  1. Stoppen Sie alle Reaktionsstreifen (z. B. Build starten).
  2. Lauf npm cache clean --force
  3. Lauf npm install
ATQSHL
quelle
0
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

funktioniert für mich unter Ubuntu.

Dionis Oros
quelle