npm安装超过最大呼叫堆栈大小


152

我正在尝试运行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 issue链接是否存在类似问题,如果不是已知问题,请添加它。另外,为什么要尝试安装v4.2.6?当前最新版本是v7.1.0,推荐的稳定版本是v6.9.1。清除所有内容,尝试6.9.1,然后更新问题。
TheEnvironmentalist,2016年

1
更新到v6.9.1仍然出现相同的错误,并且也更新了问题。无论如何,
GROX13 '11


就我而言,这是由于package.json中的递归声明引起的;)
Alberto S.

就我而言,这是由于我失去了互联网连接所致
RayJ_inSJ

Answers:


96

metzelder的回答帮助我解决了这个问题。但是,如果您运行命令npm cache clean,它将给您一条消息

从npm @ 5开始,npm缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的

因此,从npm5开始,您可以通过--force在命令中添加标志来实现。

所以命令是:

npm cache clean --force

143
我当然希望你知道自己在做什么。
CloudMeta

1
对于我来说,我已经将当前的工作目录移动到了另一个文件夹-好像它混用了npm。删除node_modules并重新安装就可以了
Philippe Hebert

10
@MetaGuru请解释运行此命令的后果...
cdalxndr

3
@CTS_AE我不认为npm团队会将此消息作为笑话。必须有后果,应该有人解释。
cdalxndr

2
@cdalxndr我是说这是一个玩笑/讽刺的评论,作为npm他的直接报价并没有真正添加任何帮助,但在这一点上更多的是模因。您可以在此处阅读有关实际命令的更多信息:docs.npmjs.com/cli-commands/cache.html明确说明了作用力;现在已经对所有缓存项的完整性进行了完全验证,如果某些东西损坏了,它会自我修复,因此,除非您要回收磁盘空间,否则缓存应始终处于适当的状态,并且永远不要清除,因此您将需要附加--force。注意:可能因版本而异。
CTS_AE

82

npm rebuild 它解决了我的问题


30
谁能进一步解释这个答案?为什么这可以解决问题?
Patrick Szalapski

3
删除package-lock.json和npm rebuild帮了我大忙
遇见Patel

就我而言,.npm文件夹中的某些文件是作为root安装的。npm高速缓存验证会告诉您什么地方不对。
kirenpillay

这成功了。npm缓存清理在这种情况下不起作用。
Shiva Naru

41

尝试删除package-lock.jsonnode-modules文件夹:

rm package-lock.json
rm -r node_modules

14
如果删除package-lock.json,就将其杀死。它保证您的依赖关系将是确定性的。
Eliseu Monar dos Santos,

4
是的,但是如果您不能在其他平台上安装应用程序,则别无选择。
马克

19

我也有同样的问题npm install。经过大量搜索,我发现删除您的.npmrc文件或其内容(位于%USERPROFILE%/.npmrc)可以解决此问题。这对我有用。


13
npm uninstall

npm cache clean --force

我使用这两种方法,但没有用。在ım删除节点模块并再次进行npm安装后,它又无法正常工作了。最后ım使用以下方法删除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缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的。”
伊恩·格兰杰




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却没有。(而且我不打算取消缓存或package-lock.json)。可以肯定,这是npm的问题。无法看到为什么npm高速缓存验证如果真正实现了自愈,那么它会更改任何内容。
Stuart Watt

3

如果您尝试安装一个不存在的软件包,或者尝试安装一个不存在的版本,也会发生此问题。


2

您卸载npm软件包并强制清理缓存并关闭终端,然后重新安装任何软件包。

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

然后重启终端并检查

仍无法正常工作将npm和node都升级到最新版本


2

如果这些答案都不对您node_modules有用,可能是因为您使用的终端不是正确的终端/您的终端被计算机的另一部分使用。

就我而言,当我执行时,我一直在这个错误(超出最大调用堆栈大小)和访问错误事件之间徘徊sudo npm i

解决方法是关闭我的IDE(这是webstorm),npm i在基本终端中运行,仅此而已。


关闭编辑器已为我修复。(对我来说是Netbeans)
Wim Pruiksma,

2

我不是Windows用户,所以如果您是Windows用户,请尝试检查Rene Knop comment

对于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,它可以正常工作



1

我尽一切努力在Mac上解决此问题。我认为当我已经从Node.js下载npm并随后使用Teambrhouse视频同时使用Homebrew重新安装了npm时,问题就开始了。

这是我尝试过的:

来自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*}

这是起作用的:

最后,对我唯一有用的是从GitHub克隆npm-reinstall存储库,该存储库完全删除了Mac上与npm相关的所有内容。

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

然后,我不得不从Node.js重新安装node和npm。


1

我们公司的开发环境Artifactory用作我们NPM依赖项的默认注册表,并且在运行时默认为默认注册表,npm install因此不起作用...因此,通过npm install --registry https://registry.npmjs.org为我解决了此问题,手动指定了主要npm注册表...


1

我遇到了同样的错误,我试图将jest安装到monorepo项目的一个软件包中。

如果您使用Yarn + Learna打包monorepo项目,则必须导航到目标包内的package.json,然后运行npm installnpm install <package name>


0

我遇到了这个问题,这是由于我的git可执行文件升级了。我回滚到Git-2.21.0.rc1.windows.1-64-bit并将其添加到我的环境路径中,它解决了我的问题。


0

我尽一切努力在Windows 7机器上解决此问题,例如

重新安装和重建npm

最后,我浪费了一整天的时间来解决这个小的配置设置问题。

我如何解决这个问题

在驱动器:/ Windows / Users /../。npmrc等位置的全局.npmrc中删除我的项目特定配置


0

在Mac上最终对我有用的一件事是使用NVM从节点8.12升级到10.x。

我使用NVM卸载了所有其他版本的Node,然后安装了10.x,然后运行了 nvm alias default node,这告诉NVM始终默认使用Shell上的最新可用节点版本。

之后,我的实时重载问题就消失了!



0

对于那些在使用Jenkins(或任何CI)构建Docker映像时遇到此问题的人,请确保将映像package-lock.json也复制到了容器中。

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

对于我们来说,安装实际上进行得很好,该错误仅在npm prune production为生产映像运行时发生。


我在使用npm prune和NODE_ENV未设置为生产时遇到此问题。通过删除node_modules并重新安装npm来解决
Eduardo

0

如果您的默认npm注册表不是公共npm存储库(您可以通过转到.npmrc文件或通过npm CLI命令检查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链接文件夹的文件。因此,我进入了rm -rf,从npm link'd文件夹中删除了所有.bin文件夹。

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

那解决了问题。


0

我遇到了同样的问题,但就我而言,我yarn从一开始就一直在使用,但是从某些软件包自述文件中,我复制了npm install命令并收到此错误。后来才意识到yarn add <package-name>解决了这个问题,并安装了软件包。

将来可能会对某人有所帮助。


0

以下步骤可帮助我解决此问题:

  1. 停止所有反应条(例如开始构建)
  2. npm cache clean --force
  3. npm install

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.