npm安装时超过最大调用堆栈大小

我正在尝试运行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多次,并试图重新安装。不能理解是什么原因导致了这个,以及如何解决它。

391481 次浏览

我通过以下方法克服了这个问题:

  • 删除npm依赖的所有内容你可以根据这个线程找到默认的安装位置: 李https://stackoverflow.com/a/5926706/1850297 < / p > < / >

  • 在运行npm install命令之前,我建议运行npm cache clean --force

梅策尔德的回答帮助我解决了这个问题。然而,如果你运行命令npm cache clean,它会给你一个消息

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

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

所以命令是:

npm cache clean --force

我删除了

node_modules

然后重新安装

npm安装

这对我很有效

我尝试了所有方法在我的Mac上解决这个问题。我认为这个问题开始于我已经从Node.js下载了npm,然后在跟随Team Treehouse视频的同时用Homebrew重新安装它。

以下是我的尝试:

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-重装回购,这完全删除了我Mac上与npm相关的所有东西。

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

然后我必须从node .js重新安装node和npm。

< p > npm rebuild 它解决了我的问题

我有同样的问题与npm install。 经过大量的搜索,我发现删除你的.npmrc文件或其内容(在%USERPROFILE%/.npmrc找到),将解决这个问题。

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

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

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

然后重启终端检查

还是不行,把npm和node都升级到最新版本

npm uninstall


npm cache clean --force

我试过这两种方法,但都不奏效。之后,我删除了node_modules目录并再次运行npm install,它仍然不工作。最后,我删除了package-lock.json并使用

npm install

NPM缓存清理返回下面的消息

从npm@5开始,npm缓存会从损坏问题中自我修复,并且从缓存中提取的数据保证是有效的。如果你想确保所有内容都是一致的,请使用'npm cache verify'。另一方面,如果你正在调试安装程序的问题,你可以使用npm install --cache /tmp/empty-cache来使用临时缓存,而不是破坏实际的缓存。

如果你运行npm cache verify,如上所述,那么它实际上会运行缓存验证和垃圾收集,从而修复问题。

缓存验证和压缩(~\AppData\Roaming\npm- cache_cache): 内容验证:6183(447214684字节)内容垃圾收集:16 (653745 bytes)索引项:9633

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

rm package-lock.json
rm -r node_modules

我不是Windows用户,所以如果你是,试着检查Rene Knop评论

对于Unix / OSX用户,我已经删除了根.npmrc文件~/.npmrc.
在你开始尝试之前,, 看看那边是否没有必要的东西 你可以使用这个命令将所有的内容带入你的终端

如果你有这样的东西:

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

保存副本:

cp ~/.npmrc ~/.npmrc_copy

现在,尝试删除它(适用于bash用户:Unix / Ubuntu / OSX…):

rm -f ~/.npmrc

这对我有用

.

.

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

在我的例子中,当我执行sudo npm i时,我一直在此错误(超过最大调用堆栈大小)和访问错误事件之间徘徊。

修复是关闭我的IDE(这是WebStorm),在一个基本终端运行npm i,这就是它。

我尝试了一切方法来解决这个问题在我的windows 7机器上

重新安装和重建npm

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

我是如何解决这个问题的

在全局.npmrc中删除我的项目特定配置 例如drive:/Windows/Users/.. npmrc

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

我用NVM卸载了所有其他版本的Node,然后安装了10。x,然后运行nvm alias default node,它告诉NVM总是默认为shell上最新可用的节点版本。

在那之后,我的实时重新加载问题消失了!

在我的情况下,更新到最新版本:

npm install -g npm

npm rebuild将工作肯定

改用纱线为我解决了这个问题。

我100%解决了这个问题,我在gulp 3.5.6版本遇到了这个问题。

你应该清理package-lock.js,然后运行npm install和It worked form

我也有同样的问题。我尝试过以前的解决方案,但对我来说,解决方案要简单得多。我只需要删除目录中的空格,然后再次运行npm i

感谢:https://github.com/nodejs/node-gyp/issues/809#issuecomment-155019383指出这一点。

如果试图安装不存在的包或试图安装不存在的版本,也会发生此问题。

我们公司的开发环境使用Artifactory作为NPM依赖项的默认注册表,当运行npm install时,它默认为这个,这不起作用…所以通过npm install --registry https://registry.npmjs.org手动指定主npm注册表为我修复了这个问题…

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

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

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

如果你的默认npm注册表不是公共npm存储库(你可以通过你的.npmrc文件或通过npm CLI命令检查你的npm配置来检查),你可以尝试取消注册表配置,让它指向公共npm存储库。然后再次运行npm install

如果你有在公共npm存储库中不可用的依赖项,试着暂时从package.json中移除这些依赖项。这将允许你运行npm install。最后,恢复您删除的依赖项和注册表配置,并最后一次运行npm install来安装其余的依赖项。

今天,我们在运行npm prune甚至运行npm cache clean --force时遇到了这个错误。

版本:

node 13.8.0
npm 6.13.6

删除package-lock.json也适用于这种情况。谢谢大家!

我也遇到了同样的错误,我试图将笑话安装到monorepo项目中的一个包中。

如果你使用Yarn + Learna来打包一个monorepo项目,你必须导航到这个包。json,然后运行npm installnpm install <package name>

我也遇到过类似的错误。我追踪到npm无法从npm链接文件夹的.bin文件夹中删除文件的事实。所以我进入并rm -rf npm链接文件夹中所有的。bin文件夹。

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

这就解决了问题。

我遇到了同样的问题,但在我的情况下,我从一开始就使用yarn,但从一些包自读文件中,我复制了npm install命令,并得到了这个错误。后来意识到yarn add <package-name>解决了这个问题,包被安装了。

它可能在将来帮助别人。

以下步骤帮助我解决了这个问题:

  1. 停止所有的反应条(例如开始构建)
  2. 运行npm cache clean --force
  3. 运行npm install
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

在Ubuntu上为我工作。

npm cache clean --force

这适用于我的节点8和npm 6+

我也遇到过同样的问题,我是这样解决的。

  1. 首先,你需要确保你的节点和NPM版本是最新的。如果不是,请将您的节点和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
    

错误消息可能与你试图运行的npm进程没有直接关系,它可能是其他正在运行的节点进程冲突或耗尽了资源。

在我的情况下,我有一个空的node_modules文件夹从最近的init和仍然得到

npm犯错!超过最大调用堆栈大小

当运行npm install --save-dev @wordpress/scripts进行WordPress插件开发时。

问题是在我的wp-content文件夹中运行的实时重新加载监视器,并停止了安装第一次工作。

对我来说 Maximum call stack size exceeded由之前的另一个错误触发。日志是这样的:

// ... skipping some deprecation warnings


> core-js@3.6.5 postinstall /root/.nvm/versions/node/v14.10.0/lib/node_modules/@aws-amplify/cli/node_modules/amplify-graphql-types-generator/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


sh: 1: node: Permission denied
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/@aws-amplify/cli/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})


npm ERR! Maximum call stack size exceeded


npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-09-10T14_10_28_397Z-debug.log

注意sh: 1: node: Permission denied引导我到https://forum.vuejs.org/t/cannot-install-vue-cli-permission-error-in-require-postinstall/82017/7

我必须在安装命令中添加--unsafe-perm,并以root用户运行:

sudo npm install -g --unsafe-perm @aws-amplify/cli

对我来说发生在docker (node:15-buster)。

记住使用WORKDIR /<folder>,这样它就不会与安装的原始npm库冲突。

文件夹可以是系统文件夹以外的任何东西,因此包括使用/

一般来说,一旦一个模块被安装,使用npm ci而不是npm install要方便得多。请在生产环境中检查这就解释了前者相对于后者的优势。 所以请运行

npm ci

所有依赖项都将被更新,问题就会消失。如果两者之间有严重的不同步,它就会出错。

我有这个问题,它证明,我有一个符号链接node_modules内指向它的父,即。

[user@localhost]$ ls -la /path/to/project/node_modules
total 3272
...
lrwxrwxrwx   1 user user  50 Nov 26 18:38 node_modules -> ../node_modules
...

我的意思是,我搞砸了bash脚本,它创建了一个循环符号链接。删除符号链接解决了这个问题。

rm -rf node_modules

然后重新安装对我来说很有效。

注意:可能不需要撕下你的锁文件

大多数情况下,如果您使用的是您工作的组织提供的系统,并且其vpn限制了该命令的使用,则会发生此问题。 在这种情况下,请先尝试断开组织vpn连接,再执行该命令

先试试这个!

再次运行npm install

非常简单,但我不知道还有谁尝试过,所以我认为我应该把它放在这里,尽管有所有现有的答案。不过,我建议人们尝试第一个,因为它是最简单的解决方案,并且不会带来其他人在删除package-lock.json时注意到的风险

理论:

这是完全未经证实的,因为我只是这样做来运行一个代码屏幕(即一个全新的回购给我),我猜一些包已经安装第一次npm install运行;它只是后来耗尽了资源。

我猜,如果我再次运行npm install,它将跳过现在安装的包的安装并完成,或者至少进一步。我所猜测的行为是我所看到的,但我实际上并没有调试或测试这种行为是否是我所猜测的原因!

显然,很多不同的方法对不同的人都有效,但我认为我应该在这个已经很好回答的问题上加上一个答案,因为这是最琐碎的事情。

如果你幸运的话,它将运行足够长的时间来获取🍵或☕😉

在我的例子中,我有一个自定义的.npmrc文件,其中包括一个用于使用私有npm注册表进行身份验证的认证令牌。

令牌已经过期,这有助于在本地返回code E401: Incorrect or missing password,但从CI构建返回ERR! Maximum call stack size exceeded

我不知道为什么,但我用sudo运行npm install,它工作了。

sudo npm install

我尝试了这个线程中的所有建议,但没有一个有效,当我运行'npm install'时,我一直得到RangeError: Maximum call stack size exceeded。我决定直接运行npm start,它成功启动,没有错误…