npm install 超出了最大调用堆栈大小

IT技术 javascript node.js npm
2021-01-15 00:23:15

我正在尝试运行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多次删除并尝试重新安装。无法理解导致此问题的原因以及如何解决。

6个回答

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

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

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

所以命令是:

npm cache clean --force
至于我,我已经将当前的工作目录移动到另一个文件夹 - 似乎混淆了 npm。删除 node_modules 并重新安装就行了
2021-03-24 00:23:15
TLDR;它实际上会像预期的那样删除缓存。以后的依赖安装可能会变慢,直到重新缓存。
2021-03-31 00:23:15
@CTS_AE 我不认为 npm 团队将此消息添加为一个笑话。必须有一个后果,有人应该解释它。
2021-04-06 00:23:15
@cdalxndr 我是说它作为一个笑话/讽刺的评论留下来,因为npm的直接引用并没有真正添加任何有用的东西,但在这一点上更多的是一个模因。您可以在此处阅读有关实际命令的更多信息:docs.npmjs.com/cli-commands/cache.html它明确解释了 force 的作用;所有缓存项现在都已完全验证其完整性,如果某些内容损坏,它将自我修复,因此缓存应始终处于正确状态并且永远不会清除,除非您尝试回收磁盘空间,因此您需要附加--force. 注意:可能因版本而异。
2021-04-06 00:23:15
@MetaGuru 请解释运行此命令的后果是什么...
2021-04-11 00:23:15

npm rebuild 它解决了我的问题

这成功了。npm cache clean 在这种情况下不起作用。
2021-03-15 00:23:15
删除了 package-lock.json 和 npm rebuild 对我有用
2021-03-22 00:23:15
就我而言,我的 .npm 文件夹中的某些文件以 root 身份安装。npm cache verify 会告诉你哪里出了问题。
2021-03-28 00:23:15
来自官方文档:> 此命令在匹配的文件夹上运行 npm build 命令。这在您安装新版本的 node 时很有用,并且必须使用新的二进制文件重新编译所有 C++ 插件。
2021-04-09 00:23:15
谁能进一步解释这个答案?为什么这可以解决问题?
2021-04-11 00:23:15

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

rm package-lock.json
rm -r node_modules
如果你删除 package-lock.json,你就失去了它的目的。它保证您的依赖项将是确定性的。
2021-03-19 00:23:15
@kip2 它将产生一个新的package-lock.json,但不一定与自上次创建以来可用的新版本的依赖项相同。这些新版本之一可能会破坏事物。
2021-03-27 00:23:15
npm installpackage-lock.json无论如何都应该恢复文件
2021-04-03 00:23:15
是的,但是如果您无法在不同的平台上安装您的应用程序,那么您别无选择,只能这样做。
2021-04-06 00:23:15
FWIW,这些命令应该在您的functions文件夹中运行我犯了在根文件夹中运行它的错误
2021-04-13 00:23:15
npm uninstall

npm cache clean --force

我尝试了这两种方法,但它们不起作用。之后,我删除了node_modules目录并npm install再次运行,它仍然不起作用。最后,我删除package-lock.json并使用创建了一个新package-lock.json文件

npm install
删除 package-lock.json 文件为我修复了它,谢谢!
2021-03-15 00:23:15
这个也帮了我,谢谢
2021-03-17 00:23:15
我当然希望你知道你在做什么。
2021-04-03 00:23:15
你不必这样做。@易卜拉欣沙玛
2021-04-06 00:23:15

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