Максимальний розмір стека викликів перевищено при встановленні npm


155

Я намагаюся запустити 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 все ще отримав таку ж помилку та оновлене запитання також. Все одно дякую
TheEn


в моєму випадку це сталося через рекурсивну заяву в package.json;)
Альберто С.

в моєму випадку це було викликано тому, що я втратив зв’язок з Інтернетом
RayJ_inSJ

Відповіді:


98

Відповідь metzelder допомогла мені виправити проблему однак якщо ви запускаєте команду npm cache clean, вона видасть вам повідомлення

Станом на npm @ 5, кеш-пам'ять npm самовиліковується від корупційних проблем і дані, витягнуті з кеша, гарантовано є дійсними

Отже, з npm5 ви можете зробити це, додавши --forceпрапор до команди.

Отже команда така:

npm cache clean --force

144
Я впевнений, що ви знаєте, що ви робите.
CloudMeta

1
Що стосується мене, я перемістив поточну робочу директорію в іншу папку - здається, вона змішала npm. Видалення node_modules та перевстановлення зробили свою справу
Філіп Хеберт

10
@MetaGuru поясніть, будь ласка, які наслідки виконання цієї команди ...
cdalxndr

3
@CTS_AE Я не думаю, що команда npm додала це повідомлення як жарт. Має бути наслідком, і хтось повинен це пояснити.
cdalxndr

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

84

npm rebuild це вирішило мою проблему


31
Хтось може пояснити цю відповідь далі? Чому це вирішує проблему?
Патрік Шалапський

3
видалено package-lock.json і npm rebuild зробили для мене трюк
зустрічайте Patel

у моєму випадку певні файли в моїй папці .npm були встановлені як root. npm кеш-перевірка повідомляє вам, що не так.
kirenpillay

Це зробило трюк. npm кеш чистий з цього приводу не працював.
Шива Нару

43

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

rm package-lock.json
rm -r node_modules

14
Ви вбиваєте мету пакета-lock.json, якщо ви видалите його. Це гарантує, що ваші залежності будуть детермінованими.
Eliseu Monar dos Santos

5
Щоправда, але якщо ви не можете встановити свій додаток на іншій платформі, то у вас немає іншого вибору, як це зробити.
Марк

19

У мене було те саме питання npm install. Після багатьох пошуків я виявив, що видалення вашого .npmrcфайлу або його вмісту (знайдено в %USERPROFILE%/.npmrc) дозволить вирішити цю проблему. Це працювало для мене.


13
npm uninstall

npm cache clean --force

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

npm install

і гаразд !!!


5
Видалення файлу package-lock.json виправило це для мене, Дякую!
Райан Вілсон

11

Я подолав це питання, зробивши наступне:

  • Видаліть весь вміст залежностей npm. Ви можете знайти місце установки за замовчуванням відповідно до цієї теми: https://stackoverflow.com/a/5926706/1850297

  • Перш ніж запустити npm installкоманду, я пропоную запуститиnpm cache clean --force


Повідомлення від npm cache clean: "Станом на npm @ 5, кеш-пам'ять npm самовиліковується від корупційних проблем та даних, витягнутих із кеша, гарантовано є дійсними."
Ян Грінґер

7

Я видалив

вузли_модулі

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

npm встановити

Це працювало для мене


2
Забавно досить , я повинен був рестарт, мій комп'ютер в доповненні до ваших кроків для його роботи, так як я працюю з WSL
Avshalom

7

У моєму випадку оновіть до новітньої версії:

npm install -g npm



3

npm кеш-чистий повертається під повідомленням

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

якщо ви запустите npm кеш-верифікацію, як зазначено вище, вона фактично запускає перевірку кешу та збирання сміття, що усуває проблему

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


Цього мені було достатньо. npm кеш-перевірка виправила проблему таким чином, що видалення node_modules не вдалося. (І я не збирався запускати кеш або пакет-lock.json). Досить впевнений, це проблема з npm, хоча. Не можу зрозуміти, чому підтвердження кеш-пам'яті npm змінило б щось, якщо воно справді самолікується.
Стюарт Ватт

3

Ця проблема також може статися, якщо ви намагаєтесь встановити пакет, який не існує, або якщо ви намагаєтесь встановити версію, яка не існує.


2

Ви видаляєте npm-пакет і змушуєте очистити кеш-пам'ять і закрити термінал та перевстановити будь-який пакет.

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

Потім перезапустіть термінал і перевірте

Все ще не працює оновлення npm та node до останньої версії


2

Якщо жоден з цих відповідей не працює для вас, це може бути тому, що термінал, який ви використовуєте, не є правильним / node_modulesвикористовується для іншої частини вашого комп'ютера.

У моєму випадку я продовжував джунглявати між цією помилкою (максимальний розмір стека викликів перевищено) та подією помилки доступу, коли я робив sudo npm i.

Виправлення полягало в тому, щоб закрити мій IDE (який був веб-штормом), запустити npm iв базовий термінал, і це було все.


Закриття редактора виправило це для мене. (Netbeans для мене)
Wim Pruiksma

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.

Ви повинні очистити пакунок-lock.js, а потім запустити npm installі він працював у формі



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

Потім мені довелося перевстановити вузол і npm з Node.js.


1

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


1

Я зіткнувся з тією ж помилкою, я намагався встановити жарт до одного з пакетів у проекті монорепо.

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


0

У мене була ця проблема, і це було пов’язано з оновленням мого виконуваного файлу git. Я повернувся до Git-2.21.0.rc1.windows.1-64-біт і додав це до мого шляху оточення, і це вирішило мою проблему.


0

Я намагався все, щоб вирішити цю проблему на моїй машині Windows 7, як

Перевстановлення та відновлення npm

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

Як я вирішив це питання

Видалення моїх конфігурацій проекту в глобальному .npmrc в такому місці, як диск: / Windows / Користувачі /../. Npmrc


0

Єдине, що нарешті працювало для мене на Mac, було оновлення з вузла 8.12 до 10.x за допомогою NVM.

Я видалив усі інші версії Node з NVM, потім встановив 10.x, потім запустив nvm alias default node , що повідомляє NVM завжди за замовчуванням до останньої доступної версії вузла на оболонці.

Після цього моя проблема з перезавантаженням у прямому ефірі пішла з ладу!



0

Для тих, хто має цю проблему під час створення зображення Докера з Дженкінсом (або будь-яким CI), переконайтеся, що файл package-lock.jsonтакож скопійований у контейнер.

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

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


У мене ця проблема з npm prune та NODE_ENV не встановлений у виробництві. Вирішено шляхом видалення node_modules та npm install знову
Едуардо

0

Якщо ваш реєстр npm за замовчуванням відрізняється від загальнодоступного сховища npm (ви можете перевірити це, перейшовши у файл .npmrc або перевіривши конфігурацію npm за допомогою команд npm CLI), ви можете спробувати зняти конфігурацію реєстру, щоб він вказував на загальнодоступне 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>вирішили проблему і пакет був встановлений.

Це може допомогти комусь у майбутньому.


0

Наступні кроки допомогли мені вирішити це питання:

  1. Зупинення всіх смуг реагування (наприклад, розпочати збірку)
  2. бігати npm cache clean --force
  3. бігати npm install

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.