Превышен максимальный размер стека вызовов при установке npm


188

Я пытаюсь запустить npm install, это вывод с консоли:

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>

и это содержание 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 ]

Удалял node_modulesнесколько раз и пытался переустановить. Не могу понять, в чем причина этого и как это исправить.


1
Прежде всего, я бы проверил ссылку на проблемы github на предмет похожих проблем и добавил ее, если это не известная проблема. Кроме того, почему вы пытаетесь установить v4.2.6? Текущая последняя сборка - v7.1.0, а рекомендуемая стабильная сборка - v6.9.1. Очистите все, попробуйте 6.9.1 и обновите вопрос.
TheEnvironmentalist

1
Обновление до v6.9.1 по-прежнему имеет ту же ошибку и обновленный вопрос. В любом случае спасибо TheEnvironmentalist
GROX13

1
Несколько советов здесь github.com/npm/npm/issues/10776
Борис Шарпантье,

в моем случае это было вызвано рекурсивным объявлением в package.json;)
Альберто С.

в моем случае это было вызвано тем, что я потерял интернет-соединение
RayJ_inSJ

Ответы:


121

Ответ Метцельдера помог мне решить проблему. однако если вы запустите команду npm cache clean, она выдаст вам сообщение

Начиная с npm @ 5, кеш npm самовосстанавливается от проблем с повреждением, и данные, извлеченные из кеша, гарантированно являются действительными.

Итак, начиная с npm5, вы можете сделать это, добавив --force флаг в команду.

Итак, команда:

npm cache clean --force

181
Я очень надеюсь, что вы знаете, что делаете.
CloudMeta

3
Что касается меня, мне пришлось переместить текущий рабочий каталог в другую папку - похоже, он перепутал npm. Удаление node_modules и переустановка сделали свое дело
Филипп Эбер

11
@MetaGuru, пожалуйста, объясните, каковы последствия выполнения этой команды ...
cdalxndr

3
@CTS_AE Не думаю, что команда npm добавила это сообщение в шутку. Должны быть последствия, и кто-то должен их объяснить.
cdalxndr

2
@cdalxndr Я говорил, что это оставлено как комментарий, как шутка / сатира, как прямая цитата из npm он на самом деле не добавил ничего полезного, а скорее мем. Вы можете узнать больше о самой команде здесь: docs.npmjs.com/cli-commands/cache.html он явно объясняет, что делает сила; что все элементы кеша теперь полностью проверены на предмет их целостности, если что-то повреждено, оно само излечится, поэтому кеш всегда должен быть в надлежащем состоянии и никогда не очищаться, если вы не пытаетесь освободить место на диске, поэтому вам нужно будет добавить --force. Примечание. Может отличаться в зависимости от версии.
CTS_AE

101

npm rebuild это решило мою проблему


36
Кто-нибудь может объяснить этот ответ дальше? Почему это решает проблему?
Патрик Салапски

4
удаленный package-lock.json и npm rebuild помогли мне
Знакомьтесь, Патель,

в моем случае некоторые файлы в моей папке .npm были установлены с правами root. npm cache verify сообщает вам, что не так.
kirenpillay

Это сработало. Очистка кеша npm в этом случае не сработала.
Шива Нару

из официальных документов:> Эта команда запускает команду сборки npm для совпадающих папок. Это полезно, когда вы устанавливаете новую версию узла и должны перекомпилировать все ваши надстройки C ++ с новым двоичным кодом.
vivekmore

54

Попробуйте удалить package-lock.jsonи node-modulesпапку:

rm package-lock.json
rm -r node_modules

14
Вы убиваете цель package-lock.json, если удалите его. Это гарантирует, что ваши зависимости будут детерминированными.
Eliseu Monar dos Santos,

9
Верно, но если вы не можете установить свое приложение, скажем, на другой платформе, у вас нет другого выбора, кроме как сделать это.
Marc

npm installдолжен package-lock.jsonвсе равно восстановить файл
kip2

FWIW, эти команды следует запускать внутри вашей functionsпапки. Я по ошибке запустил его в корневой папке
kip2

Это решение мне подходит! Большое спасибо!
Dales Vu

19

У меня была такая же проблема с npm install. После долгих поисков я обнаружил, что удаление вашего .npmrcфайла или его содержимого (находится по адресу %USERPROFILE%/.npmrc) решит эту проблему. Это сработало для меня.


14
npm uninstall

npm cache clean --force

Я использую эти два метода, но это не сработало. После удаления модулей узлов и снова установки npm, но он снова не работал. Наконец, я удаляю package-lock.json и после этого создаю новый файл package-lock.json, используя

npm install

и ладно !!!


5
Удаление файла package-lock.json устранило это для меня, спасибо!
Райан Уилсон

12

Я преодолел эту проблему, выполнив следующие действия:

  • Удалите все содержимое зависимостей npm. Вы можете найти место установки по умолчанию в соответствии с этим потоком: https://stackoverflow.com/a/5926706/1850297

  • Перед тем, как запустить npm installкоманду, предлагаю запуститьnpm cache clean --force


Сообщение от npm cache clean: «Начиная с npm @ 5, кеш npm самовосстанавливается от проблем с повреждением, и данные, извлеченные из кеша, гарантированно являются действительными».
Ян Грейнджер


8

я удалил

node_modules

а затем переустановил

npm install

Это сработало для меня


3
достаточно забавно, что мне пришлось перезагрузить мой компьютер в дополнение к вашим действиям, чтобы он работал, так как я работаю с wsl
Авшалом

Это сработало для меня, но ни одно из других решений не
помогло


6

Эта проблема также может возникнуть, если вы пытаетесь установить пакет, которого не существует, или если вы пытаетесь установить версию, которой не существует.


4

Я тоже столкнулся с той же проблемой, и вот как я ее решил.

  1. Прежде всего, вам нужно убедиться, что у вас актуальные версии node и npm . в противном случае обновите пакеты node и npm до последних версий.

    nvm install 12.18.3 // update node version through node version manager
    
    npm install npm // update your npm version to latest
    
  2. Удалите node_modulesпапку и package-lock.jsonфайл.

  3. Принудительно очистите весь кеш NPM, используя следующую команду.

    npm cache clean --force
    
  4. Переустановите все зависимости.

    npm install
    
  5. Если описанный выше шаг не помог решить вашу проблему, попробуйте переустановить зависимости после выполнения следующей команды.

    npm rebuild
    

4

npm cache clean возвращает сообщение ниже

Начиная с npm @ 5, кеш npm самовосстанавливается от проблем с повреждением, и данные, извлеченные из кеша, гарантированно являются действительными. Если вы хотите убедиться, что все согласовано, используйте вместо этого npm cache verify. С другой стороны, если вы устраняете проблему с помощью установщика, вы можете npm install --cache /tmp/empty-cacheиспользовать временный кеш вместо того, чтобы уничтожать фактический.

Если вы запустите npm cache verify, как указано выше, он фактически запустит проверку кеша и сборку мусора, что устранит проблему.

Кэш проверен и сжат (~ \ AppData \ Roaming \ npm-cache_cacache): Контент проверен: 6183 (447214684 байта) Контент с собранным мусором: 16 (653745 байтов) Записи индекса: 9633


Для меня этого было достаточно. npm cache verify устранил проблему так, как удаление node_modules - нет. (И я не собирался уничтожать кеш или package-lock.json). Хотя почти уверен, что это проблема с npm. Не понимаю, почему проверка кэша npm может что-то изменить, если действительно вылечила себя.
Стюарт Ватт,

2

Вы удаляете пакет npm, принудительно очищаете кеш, закрываете терминал и переустанавливаете любой пакет.

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

Затем перезапустите терминал и проверьте

Все еще не работает, обновите как npm, так и node до последней версии


2

Если ни один из этих ответов не работает для вас, это может быть связано с тем, что терминал, который вы используете, не тот / ваш node_modules используется другой частью вашего компьютера.

В моем случае я продолжал колебаться между этой ошибкой (превышен максимальный размер стека вызовов) и событием ошибки доступа, когда я сделал файл sudo npm i.

Исправление заключалось в том, чтобы закрыть мою среду IDE (которая была веб-штормом), запустить ее npm iв базовом терминале, и все.


Закрытие редактора исправило это для меня. (Netbeans для меня)
Вим Пруиксма

2

Я не пользователь Windows , поэтому, если да, попробуйте проверить комментарий Рене Кнопа .

Для пользователей Unix / OSX я удалил корневой файл .npmrc~/.npmrc .
Перед тем как вы собираетесь попробовать, пожалуйста , проверьте, нет ничего необходимого там вы можете использовать эту команду , чтобы привести все содержимое в ваш терминал:cat ~/.npmrc .

Если у вас есть что-то вроде:

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

чтобы сохранить копию:

cp ~/.npmrc ~/.npmrc_copy

Теперь попробуйте удалить его (работает для пользователей bash: Unix / Ubuntu / OSX ...):

rm -f ~/.npmrc

Это сработало для меня.
Надеюсь, это будет полезно для других.


2

Я решил это на 100%. У меня была эта проблема с версией gulp: 3.5.6.

Вы должны очистить package-lock.js, а затем запустить npm installи он сработал.


2

У меня тоже была такая же проблема. Я пробовал предыдущие решения, но решение для меня было намного проще. Мне нужно было только удалить пространство в каталоге, а затем запуститьnpm i снова

Спасибо: https://github.com/nodejs/node-gyp/issues/809#issuecomment-155019383 за указание на это.


2

Произошло у меня в докере (узел: 15-buster).

Не забудьте использовать, WORKDIR /<folder>чтобы он не конфликтовал с исходными установленными библиотеками npm.


У меня была проблема «превышен размер стека вызовов» в докере, пока я не переместил строку WORKDIR в верхнюю часть файла Dockerfile. Очевидно, расположение этой линии имеет значение.
zipzit

1

Я перепробовал все, чтобы исправить эту проблему на своем Mac. Я думаю, проблема началась, когда я уже загрузил npm с Node.js, а затем переустановил его с помощью Homebrew, следя за видео с Team Treehouse.

Вот что я пробовал:

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

Из раздела Как полностью удалить Node.js и переустановить с самого начала (Mac OS X)

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

Вот что сработало:

В конце концов, единственное, что у меня сработало, - это клонировать репозиторий npm-переустановить с GitHub, который полностью удалил все, что связано с npm на моем Mac.

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

Затем мне пришлось переустановить node и npm из Node.js.


1

Наша среда разработки компании использует Artifactoryв качестве реестра по умолчанию для наших зависимостей NPM, и при запуске по умолчанию npm installэто не сработало ... поэтому ручное указание основного реестра npm с помощью npm install --registry https://registry.npmjs.orgисправления этой проблемы для меня ...


1

Я столкнулся с той же ошибкой, я пытался установить шутку в один из пакетов в проекте monorepo.

Если вы используете Yarn + Learna для упаковки проекта monorepo, вам нужно будет перейти к package.json внутри целевого пакета, а затем запустить npm installили npm install <package name>.


0

У меня была эта проблема, и это было связано с обновлением моего исполняемого файла git. Я откатился до Git-2.21.0.rc1.windows.1-64-bit и добавил это в свой путь к среде, и это устранило мою проблему.


0

Я пробовал все, чтобы исправить эту проблему на моем компьютере с Windows 7, например

Переустановка и восстановление npm

Наконец, я исправил эту небольшую проблему с настройками конфигурации, потратив впустую весь день.

Как я решил эту проблему

Удаление конкретных конфигураций моего проекта в глобальном .npmrc в таком месте, как диск: / Windows / Users /../. Npmrc


0

Единственная вещь, которая наконец сработала для меня на Mac, - это обновление с узла 8.12 до 10.x с использованием NVM.

Я удалил все другие версии Node с NVM, затем установил 10.x и запустил nvm alias default node , что говорит о том, что NVM всегда по умолчанию использует последнюю доступную версию узла в оболочке.

После этого у меня исчезла проблема с живой перезагрузкой!



0

Тем, у кого возникла эта проблема при создании образа Docker с Jenkins (или любым другим CI), убедитесь, что файл package-lock.jsonтакже скопирован в контейнер.

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

Для нас установка действительно прошла нормально, ошибка возникла только при запуске npm prune productionдля производственного образа.


У меня проблема с npm prune и NODE_ENV, которые не установлены в производство. Решено путем удаления node_modules и повторной установки npm
Эдуардо,

0

Если ваш реестр npm по умолчанию не является общедоступным репозиторием npm (вы можете проверить это, перейдя в файл .npmrc или проверив свою конфигурацию npm с помощью команд интерфейса командной строки npm), вы можете попробовать отключить конфигурацию реестра, чтобы она указывала на общедоступный репозиторий npm. Тогда бегиnpm install снова .

Если у вас есть зависимости, недоступные в общедоступном репозитории npm, попробуйте временно удалить эти зависимости из package.json. Это позволит вам бежать npm install. Наконец, верните удаленные зависимости и конфигурацию реестра и запустите их в npm installпоследний раз, чтобы установить остальные зависимости.


0

Сегодня мы столкнулись с этой ошибкой при запуске npm pruneдаже после запускаnpm cache clean --force .

Версии:

node 13.8.0 
npm 6.13.6

Удаление package-lock.jsonсработало и для этого случая. Спасибо вам всем!


0

Я столкнулся с аналогичной ошибкой. Я отследил это до того факта, что npm не смог удалить файлы из папок .bin для папки npm link'd. Итак, я вошел и rm -rf все папки .bin из папки npm link'd.

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

Это решило проблему.


0

Я столкнулся с той же проблемой, но в моем случае я использовал yarnс самого начала, но из некоторого пакета readme я скопировал npm installкоманду и получил эту ошибку. Позже понял, что yarn add <package-name>проблема решена и пакет был установлен.

Это может помочь кому-то в будущем.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.