npm ERR cb()从未调用


274

我在Heroku上托管了一个Node.js应用程序。每次执行a时git push heroku,都会出现以下错误:

Counting objects: 14, done.
Delta compression using up to 6 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (12/12), 1.20 KiB, done.
Total 12 (delta 8), reused 0 (delta 0)

-----> Node.js app detected
-----> Resolving engine versions
       Using Node.js version: 0.6.20
       Using npm version: 1.2.12
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
       npm http GET https://registry.npmjs.org/pg/0.6.15
       npm http GET https://registry.npmjs.org/socket.io
       npm http 200 https://registry.npmjs.org/pg/0.6.15
       npm http GET https://registry.npmjs.org/pg/-/pg-0.6.15.tgz
       npm http 200 https://registry.npmjs.org/socket.io
       npm http GET https://registry.npmjs.org/socket.io/-/socket.io-0.9.13.tgz
       npm http 200 https://registry.npmjs.org/pg/-/pg-0.6.15.tgz
       npm http 200 https://registry.npmjs.org/socket.io/-/socket.io-0.9.13.tgz
       npm http GET https://registry.npmjs.org/socket.io-client/0.9.11
       npm http GET https://registry.npmjs.org/policyfile/0.0.4
       npm http GET https://registry.npmjs.org/base64id/0.1.0
       npm http GET https://registry.npmjs.org/redis/0.7.3
       npm http GET https://registry.npmjs.org/generic-pool/1.0.9
       npm http 200 https://registry.npmjs.org/policyfile/0.0.4
       npm http GET https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz

       npm http 200 https://registry.npmjs.org/base64id/0.1.0
       npm http GET https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz
       npm http 200 https://registry.npmjs.org/generic-pool/1.0.9
       npm http GET https://registry.npmjs.org/generic-pool/-/generic-pool-1.0.9
.tgz
       npm http 200 https://registry.npmjs.org/socket.io-client/0.9.11
       npm http GET https://registry.npmjs.org/socket.io-client/-/socket.io-clie
nt-0.9.11.tgz
       npm http 200 https://registry.npmjs.org/redis/0.7.3
       npm http GET https://registry.npmjs.org/redis/-/redis-0.7.3.tgz
       npm http 200 https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz

       npm http 200 https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz
       npm http 200 https://registry.npmjs.org/generic-pool/-/generic-pool-1.0.9
.tgz
       npm http 200 https://registry.npmjs.org/socket.io-client/-/socket.io-clie
nt-0.9.11.tgz
       npm http 200 https://registry.npmjs.org/redis/-/redis-0.7.3.tgz

       > pg@0.6.15 install /tmp/build_36us8733h7kkr/node_modules/pg
       > node-waf configure build || (exit 0)

       Checking for program g++ or c++          : /usr/bin/g++
       Checking for program cpp                 : /usr/bin/cpp
       Checking for program ar                  : /usr/bin/ar
       Checking for program ranlib              : /usr/bin/ranlib
       Checking for g++                         : ok
       Checking for node path                   : not found
       Checking for node prefix                 : ok /tmp/node-node-nNUw
       Checking for program pg_config           : /usr/bin/pg_config
       'configure' finished successfully (0.058s)
       Waf: Entering directory `/tmp/build_36us8733h7kkr/node_modules/pg/build'
       [1/2] cxx: src/binding.cc -> build/Release/src/binding_1.o
       [2/2] cxx_link: build/Release/src/binding_1.o -> build/Release/binding.no
de
       Waf: Leaving directory `/tmp/build_36us8733h7kkr/node_modules/pg/build'
       'build' finished successfully (0.492s)
       npm http GET https://registry.npmjs.org/uglify-js/1.2.5
       npm http GET https://registry.npmjs.org/ws
       npm http GET https://registry.npmjs.org/xmlhttprequest/1.4.2
       npm http GET https://registry.npmjs.org/active-x-obfuscator/0.0.1
       npm http 200 https://registry.npmjs.org/active-x-obfuscator/0.0.1
       npm http GET https://registry.npmjs.org/active-x-obfuscator/-/active-x-ob
fuscator-0.0.1.tgz
       npm http 200 https://registry.npmjs.org/uglify-js/1.2.5
       npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz
       npm http 200 https://registry.npmjs.org/xmlhttprequest/1.4.2
       npm http GET https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1
.4.2.tgz
       npm http 200 https://registry.npmjs.org/ws
       npm http GET https://registry.npmjs.org/ws/-/ws-0.4.25.tgz
       npm http 200 https://registry.npmjs.org/active-x-obfuscator/-/active-x-ob
fuscator-0.0.1.tgz
       npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz
       npm http 200 https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1
.4.2.tgz
       npm http 200 https://registry.npmjs.org/ws/-/ws-0.4.25.tgz
       npm http GET https://registry.npmjs.org/zeparser/0.0.5
       npm http GET https://registry.npmjs.org/commander
       npm http GET https://registry.npmjs.org/tinycolor
       npm http GET https://registry.npmjs.org/options
       npm http 200 https://registry.npmjs.org/zeparser/0.0.5
       npm http GET https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz
       npm http 200 https://registry.npmjs.org/options
       npm http GET https://registry.npmjs.org/options/-/options-0.0.3.tgz
       npm http 200 https://registry.npmjs.org/tinycolor
       npm http GET https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz
       npm http 200 https://registry.npmjs.org/commander
       npm http GET https://registry.npmjs.org/commander/-/commander-0.6.1.tgz
       npm http 200 https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz
       npm http 200 https://registry.npmjs.org/options/-/options-0.0.3.tgz
       npm http 200 https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz
       npm http 200 https://registry.npmjs.org/commander/-/commander-0.6.1.tgz

       > ws@0.4.25 install /tmp/build_36us8733h7kkr/node_modules/socket.io/node_
modules/socket.io-client/node_modules/ws
       > (node-gyp rebuild 2> builderror.log) || (exit 0)

       make: Entering directory `/tmp/build_36us8733h7kkr/node_modules/socket.io
/node_modules/socket.io-client/node_modules/ws/build'
         CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
         SOLINK_MODULE(target) Release/obj.target/bufferutil.node
         SOLINK_MODULE(target) Release/obj.target/bufferutil.node: Finished
         COPY Release/bufferutil.node
         CXX(target) Release/obj.target/validation/src/validation.o
         SOLINK_MODULE(target) Release/obj.target/validation.node
         SOLINK_MODULE(target) Release/obj.target/validation.node: Finished
         COPY Release/validation.node
       make: Leaving directory `/tmp/build_36us8733h7kkr/node_modules/socket.io/
node_modules/socket.io-client/node_modules/ws/build'
       npm ERR! cb() never called!
       npm ERR! not ok code undefined
       npm ERR! cb() never called!
       npm ERR! not ok code 1
 !     Failed to install --production dependencies with npm
 !     Heroku push rejected, failed to compile Node.js app

To git@heroku.com:still-chamber-1286.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:still-chamber-1286.git'

错误出现在最后几行:npm ERR!cb()从未调用过!npm ERR!错误代码未定义npm ERR!cb()从未调用过!npm ERR!不好,代码1!无法使用npm安装--production依赖项!Heroku推送被拒绝,无法编译Node.js应用

To git@heroku.com:still-chamber-1286.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:still-chamber-1286.git'

以前,我在将代码推送到Heroku时没有任何问题。直到星期一,我才遇到这个错误。

我在网络上看到过类似的帖子,它们所指的错误略有不同,但以前从未见过! [remote rejected] master -> master (pre-receive hook declined)


今天将节点应用程序推送到heroku时,我遇到了同样的错误:! [remote rejected] master -> master (pre-receive hook declined)
Smithclay

6
奇怪的是,"engines": { "node": "0.8.x" }为我补充了package.json该错误。
Smithclay

它起作用了,非常感谢:)尽管应该注意,我已经"engines": { "node": "0.6.x" }进入了package.json,但我只需要将其从更改0.6.x0.8.x
Louise K

1
当前存在一个有关npm和节点0.10.0的错误的公开问题:github.com/isaacs/npm/issues/2907
JCM

2
我自己通过简单地更新npm($> npm install -g npm)来解决了这个问题,因为我收到警告,表示软件包在控制台输出中无论如何都希望得到更高的版本。
racl101 2015年

Answers:


312

如果您具有npm 5或更高版本,请首先尝试以下操作:

$ sudo npm cache verify

除此以外:

$ sudo npm cache clean

我的节点和npm版本是:

$ node -v
v0.10.0

$ npm -v
1.2.14

https://docs.npmjs.com/cli/cache


1
解决方法有所帮助,但是对于相同的错误,但是在模块安装期间(grunt-contrib-yuidoc),谢谢。
Wiseman

这不是针对本地运行的解决方案,不是在Heroku上吗?对于Heroku,此解决方案似乎不起作用。
Valentyn Shybanov 2013年

10
啊。我尝试对此答案提出建议,但显然必须至少包含6个字符。无论如何,应该clean不是clearnpmjs.org/doc/cache.html
泰勒·海斯

构建postgres本机扩展后出现此错误,rm -fr $ HOME / .node-gyp可以解决问题。
Giovanni Toraldo 2014年

2
npm cache clean当我不断在不同的npm注册表之间切换时,它为我工作。
qmmr

141

对于在2013年9月29日左右访问此页面的任何人,Node.js 0.10.19中都有一个已关闭的错误,它会导致此错误。

https://github.com/isaacs/npm/issues/2907#issuecomment-15215278 https://github.com/joyent/node/issues/6263#issuecomment-25113849

如果您在Heroku上,则应升级到0.10.20

"engines": {
    "node": "0.10.20"
}

40
9月29日?这是将来的错误吗?:)感谢您的解决方案!
JBCP

1
谢谢!绝对是我要找的
Kyle Hotchkiss

3
您从未来发布!这确实是一个严重的错误。; /
juanpaco

2
(在撰写本文时)在22个小时内进行了45次投票:)您精采地针对旧的但类似的问题抢先发布新的和最新的答案。互联网摇摇欲坠!
Meetamit 2013年

1
昨天我遇到了这个错误,今天又重新安装了节点(10月1日),它又可以正常工作-它似乎已在v0.10.20中修复。感谢您的帮助,为我节省了很多时间。
dirkk0 2013年


28

尝试清除您的npm缓存:

sudo npm cache clean --force

23

你有一个特定版本的"npm"规定下,"engines"在你的package.json?听起来像NPM v1.2.15 解决了该问题(并且Heroku已可用)。我遇到了同样的问题"1.1.x"


太棒了 那肯定使我烦恼。指定了我的npm版本,它就像一个魅力。
Eric H.

20
如果您曾经在奥斯丁(德克萨斯州)住过,请让我给您买个比萨饼!很抱歉,但由于您的回答,它抓住了我目前的喜悦状态。我绝不会怀疑拥有NPM的版本规范是罪魁祸首。艾丹,希望您过得愉快。
juanpaco

1
@juanpaco,你太可笑了。
丹尼尔(Daniel)

是的,我从package.json中删除了这个“ engines”表,它起作用了:)
KamilKiełczewski19年

23

重要!现在,以下解决方案被认为是不稳定的,您应该改为使用Node Version Management:Github上的Node Version Manager。David Walsh 对NVM也有很好的介绍。NVM运行精美,几年来我一直在使用它来管理旧的WordPress项目。


请不要使用此-使用NVM

在尝试为WordPress安装Sage主题时,我遇到了这个问题。当我npm install在主题目录上运行时,它失败了。

查看中的依赖项package.json,我可以看到我为Node运行的引擎已过期。node -v在命令行上运行表明我使用的是v0.10.9,最新版本的Sage要求> = 0.12.0

所以这是解决方法。这些步骤来自David Walsh的博客

  1. 清除您的npm缓存: sudo npm cache clean -f
  2. 安装最新版本的Node helper: sudo npm install -g n
  3. 告诉助手(n)安装最新的稳定版Node: sudo n stable

然后,您应该获得进度显示,之后您将保持最新状态。

当我跑npm install这样做之后,一切工作正常,我是能够运行gulp构建初始dist目录。


步骤2也应该如此sudo npm install -g n
Mauro Vanetti

根据您的源链接,此解决方案是“不稳定的”,并且Node Version Manager更好github.com/nvm-sh/nvm/blob/master/README.md
PJ Brunet

感谢大家的注意-我将相应地更新帖子
raffjones

14

如果您已更新了角度cli,npm,node,则无需执行其他任何操作。只需运行以下命令即可解决该问题。此命令还解决了“意外的行尾”问题。

npm install --no-package-lock

在您正在使用的同一工作空间中运行此命令。
chetan shah


11

更新NodeJS https://nodejs.org/en/修复了我的问题。

运行npm install -g npmnpm cache clean


是。实际上,它对我来说是这样的。首先,我更新了Node并运行了那些有效的命令。可能是使其工作的另一种方式。希望它能帮助一些人。
斯里尼瓦斯

1
非常感谢您:)这应该是公认的答案
Solution Spirit

9

我在安装时遇到了同样的问题ionic@beta。我尝试了以下项目,但它们并没有帮助我。

  1. npm cache clean
  2. 从中手动删除缓存 %temp%\npm-*
  3. 命令提示符“以管理员身份运行”

我通过安装node-v5.10.1-x64.msi(以前的版本为node-v5.9.0-x64.msi)解决了该问题,并npm cache clean在安装前运行了ionic@beta

有效!


2
这对我有用,谢谢!5.9.x一定有问题。
尼克·乔治

安装节点可能已安装了新的npm,这可能是导致此问题修复的原因。
mikemaccana

8

我在NPM版本1.3.11中遇到了相同的问题,只需多次重新运行完全相同的命令即可解决此问题(本例中为“ npm update -g”)。在随后的每次运行中,针对不同的程序包都会弹出该错误,并最终成功更新所有内容。

至少对我来说,这似乎是由网络问题(下载损坏)引起的。我还收到有关无效软件包的错误,我可以通过删除“ tmp.tgz”的所有实例来解决该错误。

编辑:(可能不相关,但是如果这对任何人都有帮助:我正在使用Windows,并且在收到初始错误后以管理员身份启动了命令提示符)。


1
自发布此文章以来,我已经看到很多人说他们在Unix和Mac上具有相同的经验(多次尝试最终绕过了该问题)。不知道问题是否与网络有关,但似乎很普遍。
Sven Viking

显然,此错误已在v0.10.20中修复:blog.nodejs.org/2013/09/30/node-v0-10-20-stable
Sven Viking

8

对我而言,以上解决方案均无效(重新安装,清除缓存,文件夹等)。

我的问题已解决:

npm config set registry https://registry.npmjs.org/

5

sudo npm cache clean没有为我工作。更新到最新版本的节点帮助。

我有节点v.5.91并更新为v6.9.1


1
看来这是一个反复出现的问题,我在10.15.0和11.6.0上也遇到了同样的问题,我不得不降级9.11.2,它可以正常工作。
CsBalazsHungary,

5

对我来说,在npm 6.4.0和node上,10.9.0没有任何答案有效。重新安装节点,npm,清理缓存,删除文件夹...

经过一番调试,结果证明我使用npm link了两个开发中的模块相互链接。一旦我删除并重新链接了一些链接,我就可以使它再次正常运行。


4

似乎特定的依赖项版本可能导致此问题。例如,gulp-uglifycss 1.0.7就有这个问题(请参阅https://github.com/rezzza/gulp-uglifycss/issues/15)。

如果您允许packages.json通过^或进行主要或次要版本更新,请~在文件中删除这些字符,然后尝试另一个npm install。如果那段时间有效,那么您可以缩小范围内引起问题的软件包的范围,然后您会没事的。



3

尝试在Windows笔记本电脑中安装firebase-tools时遇到相同的问题。这就是我解决的方法。

  1. 我下载了卡巴斯基并安装了它。然后我禁用了卡巴斯基安全连接
  2. 我打开cmd并运行此命令 npm cache clean --force
  3. 然后我运行此命令 npm install npm@latest -g
  4. 然后我运行firebase cli命令 npm install -g firebase-tools

在此命令中npm cache clean --force --force帮助清理了缓存
WasiF '18年

@Benja-卡巴斯基是一种防病毒软件,与您的安装或NPM问题无关。如果您
对此有疑问

3

我建议: 切换到Yarn!- 纱线是使用相同的软件包管理器package.json的文件和node_modules文件夹NPM。

使用npm时,我遇到了同样的问题:在CentOS 6安装上,我ERR cb() never called反复遇到该错误,无法找到使npm 可靠地完成某些软件包安装的方法(webpack例如)。-即使在不稳定的网络连接上,纱线也能完美工作。

迁移到纱线很容易。大多数子命令是相同的。他们有很好的迁移指南。最后阅读方便的CLI命令比较


我经常npm install在Docker容器内部遇到问题(通常在Ubuntu主机上运行)。失败yarn install时已经阻止我进入两个不同的项目npm install!希望我知道为什么,但是...
Jamie Birch

是的,我可以确认我在使用纱线方面没有任何问题。不幸的是,如今npm简直就是废话。程序包锁定文件的生成在某些随机时刻被破坏了。在纱线中什么也没有发生。它的yarn.lock文件总是很好
尼克

3

对于Ubuntu用户,以下给定的方法对我有效。

首先,执行以下操作: sudo npm cache verify

然后转到Home->。npm并通过以下方式删除_cache文件夹: sudo rm -rf _cacache/

去检查一下,也许您找到了解决方案。



2

在mdp离开的地方取货,问题出在节点0.10.19和npm 1.3.11

我找到了管理降级以使事情顺利进行的最简单方法,那就是NVM是一个很好的使用方法教程。我使用NVM在几分钟内就修改了服务器环境,并可以正确地将其从0.10.19降级到0.10.18。


NVM非常有用。我遇到了许多与版本冲突有关的问题,只有通过安装和使用NVM才能解决这些问题。这很棒!谢谢。
肯J

2

我在Mac上遇到了相同的问题,并且尝试了所有可以找到的方法:升级到最新的Node,清理缓存,删除_node_mudules_目录,但所有方法均无效。最终,我认为这是Node环境的问题,因此我将Node降级为旧的LTS版本6.14.1,然后问题消失了。这是我的工作:

  1. 安装NVM(要获得全新的隔离节点环境,最好使用NVM来管理多个节点环境, 有关详细信息,请转到此处

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

  2. 安装Node.js 6.14.1

    nvm install 6.14.1

  3. 切换到上面安装的特定Node环境

    nvm use 6.14.1

  4. 安装create-react-app

    npm install -g create-react-app

  5. 创建您的应用

    create-react-app appname


2

npm install 会导致:

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>

就我而言,此错误是在我升级到Node.js版本时开始发生的8.11.1。以前使用Node.js版本6.12.x和NPM版本5.8.0

除此之外,我的测试脚本找不到AVA:

sh: ava: command not found
npm ERR! Test failed.  See above for more details.

解决方案是将NPM降级为 5.7.1



2

对于最近从6.x升级到6.7.0的任何人。

删除/Users/{YOUR USERNAME}/.npm文件夹可以解决我的问题npm install

我也运行了一些https://npm.community/t/crash-npm-err-cb-never-call/858/93?u=jasonfoglia建议的命令

sudo npm cache clean -f
sudo npm install -g n

但是在删除文件夹之前,我不确定哪个真正有效。因此,如果您遇到此问题,而只是删除解决该问题的.npm文件夹,请注意在注释中。


2

今天,我也遇到了同样的问题,因为由于互联网问题,我强制两次之间停止了npm软件包的下载。

我尝试了很多类似的事情,

  1. 运行sudo npm cache clean -f-无法正常工作
  2. 清理卸载节点并重新安装-这同样行不通

我终于尝试删除包含创建问题的npm缓存的文件夹。我运行了以下命令,

sudo rm -rf /Users/{user_system_user}/.npm/

然后,我尝试安装被卡住的软件包,并且一切正常。

PS:根据系统的当前用户替换{user_sytem_user}。


我认为使用最新的npm版本,您的解决方案是唯一可行的解​​决方案。
豪尔赫·瓦尔维特19'Apr

2

我遇到了cb() never called!错误,这里没有答案直接对我有用。我正在运行Node v8.11.2,并且必须手动删除该package-lock.json文件才能到达任何地方。完成此操作后,我npm cache verify按照建议的答案进行了搜索。然后,运行npm i产生以下结果:

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN securities-stub@1.0.0 No description
npm WARN securities-stub@1.0.0 No repository field.

up to date in 5.118s

1
brew uninstall node
cd /usr/local
git checkout f7bbdcc /usr/local/Library/Formula/node.rb
brew install node

查找类似的其他版本:

brew versions node

1

执行npm install npm@latest -g将npm更新到最新版本。这为我解决了问题。我做npm cache clean第一


1

就我而言,我无法安装VueJS插件,而我必须:

更改文件的所有权:

须藤chown -R $(whoami)〜/ .npm

须藤chown -R $(whoami)/ usr / local / lib

须藤chown -R $(whoami)/ usr / local / bin

然后确保最新的npm:

npm install -g npm @ latest

然后安装了我的插件,您的情况可能是命令无效。

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.