我使用的是 12.04LTS。我今天更新了系统,在此过程中 nodejs 也进行了更新。现在我的 npm 已停止工作。例如:
$ npm install express
npm http GET https://registry.npmjs.org/express
npm http 200 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/express/-/express-3.1.0.tgz
npm http 200 https://registry.npmjs.org/express/-/express-3.1.0.tgz
npm ERR! cb() never called!
npm ERR! not ok code 0
是否有人遇到同样的问题并知道如何解决?
答案1
您使用 Chris Lea 的 PPA 吗?这可能会有所帮助:https://chrislea.com/2013/03/15/upgrading-from-node-js-0-8-x-to-0-10-0-from-my-ppa/
还要注意的是,nodejs-dev 和 npm 包不再存在。新的 nodejs 包包含这些单独包以前的所有内容,因为 npm 需要所有开发文件,而现在如果你不使用 npm,你实际上并没有使用 node。所以我们认为我们只需使用单个包就可以简化事情。
升级将卸载以前的版本,但 apt 对此可能有点固执。与通常的
sudo apt-get update
sudo apt-get upgrade
你可能会想做类似的事情
sudo apt-get update
sudo apt-get -y dist-upgrade
答案2
你看到的是漏洞出现在 node 0.10 和 1.2.15 之前的 npm 版本的某些组合中。
正如 Todd 指出的那样,nodejs
自 0.10 版起,Ubuntu 软件包包含npm
。但是,由于您之前以npm
“旧”方式安装,即像任何其他全局安装的 npm 软件包一样,因此升级后仍会从您的软件包中获取旧版本(显示错误)$PATH
。
使用which npm
来查看您是否从 中安装了软件包/usr/bin/npm
。如果您仍然获得“旧”版本,请将其删除(它只是一个符号链接),然后您将从 Ubuntu 软件包中获取“新”版本。
答案3
好的。可以通过从主文件夹中删除 .npm 和 .node-gyp 目录,然后重新安装 nodejs 来解决此问题。我不确定这是否万无一失,但对我来说很有效 :)
答案4
这对我有用。卸载 npm。升级安装的 nodejs。
apt-get remove npm
apt-get install nodejs