节点错误 npm ERR! cb() 从未调用过

问题描述 投票:0回答:4

当我运行命令时

npm install npm@latest -g
我遇到以下错误:-

npm WARN tar zlib error: unexpected end of file
npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\dk\AppData\Roaming\npm-cache\_logs\2018-04-10T03_25_52_880Z-debug.log

我用谷歌搜索并尝试了很多方法,但没有任何效果。

node.js npm npm-install
4个回答
41
投票

更新答案

使用

npm ci
(归功于Justin Dehorty,请参阅下面的答案)

旧答案

对于任何偶然发现这个问题的人,如果您在

npm install
上遇到相同的错误消息,那么
npm install --no-package-lock
会为我解决它。

正如上面 Mohit Mutha 评论中引用的 Github 问题中所建议的,如果命令在 CI/CD 管道中运行,或者在我的例子中,在 Docker 中运行,则尤其如此。

编辑: 原因是

package-lock.json
文件已存在于您的 Docker 映像或 CI 管道中

完整详情


12
投票

我们的团队在 CI 管道中遇到了这个错误。然而,使用

--no-package-lock
的最佳答案实际上会导致 npm 也not 使用现有的 package-lock.json,这绝对不是 CI 所需的行为。相反,现在推荐使用
npm ci
在 CI 中安装,因为它将使用现有的包锁(而不是其他)。


6
投票

通过运行解决

sudo npm cache clean --force

然后删除package-lock.json和node_modules

然后表演

npm install 

0
投票

仅供参考,我已经浏览了数十个这些回复,以求一次又一次在这里发布的完全相同的问题。我认为大多数回复都是有效的。但就我而言,实际问题是企业代理而不是 npm 本身。

在我的 Dockerifle 中,我必须在运行

http-proxy
之前将
https-proxy
npm install
显式添加到我的 npm 配置中,并且它有效。仅供参考,您需要告诉 npm 配置有关您的代理的信息,否则它不会下载依赖项,这就是引发
cb() never called
错误的原因 - 这适用于本地(终端)和 docker 容器。

...
RUN npm config set http-proxy http://mycompanyproxy.mycompany.com:8099
RUN npm config set https-proxy http://mycompanyproxy.mycompany.com:8099
RUN npm install
EXPOSE 3000
CMD ["node", "server"]
© www.soinside.com 2019 - 2024. All rights reserved.