首页 > 解决方案 > npm 安装错误“无法读取未定义的属性‘最新’”

问题描述

我正在尝试在公认的旧版本 npm 上运行“npm install”命令并遇到以下问题,即使在运行“npm cache clean”之后,我们正在运行版本 1.3.6,因为我们正在尝试重建现有硬件故障后的软件。任何指针将不胜感激。

npm WARN package.json ooi-ui@0.0.1 No repository field.
npm http GET http://registry.npmjs.org/videojs-wavesurfer
npm http 200 http://registry.npmjs.org/videojs-wavesurfer
npm http GET http://registry.npmjs.org/videojs-wavesurfer/-/videojs-wavesurfer-2.11.0.tgz
npm http 200 http://registry.npmjs.org/videojs-wavesurfer/-/videojs-wavesurfer-2.11.0.tgz
npm http GET http://registry.npmjs.org/video.js
npm http GET http://registry.npmjs.org/wavesurfer.js
npm http 200 http://registry.npmjs.org/wavesurfer.js
npm http GET http://registry.npmjs.org/wavesurfer.js/-/wavesurfer.js-4.2.0.tgz
npm http 200 http://registry.npmjs.org/wavesurfer.js/-/wavesurfer.js-4.2.0.tgz
npm http 200 http://registry.npmjs.org/video.js
npm http GET http://registry.npmjs.org/video.js/-/video.js-7.10.2.tgz
npm http 200 http://registry.npmjs.org/video.js/-/video.js-7.10.2.tgz
npm http GET http://registry.npmjs.org/babel/runtime
npm http GET http://registry.npmjs.org/videojs/http-streaming/2.2.4
npm http GET http://registry.npmjs.org/videojs/xhr/2.5.1
npm http GET http://registry.npmjs.org/global/4.3.2
npm http GET http://registry.npmjs.org/keycode
npm http GET http://registry.npmjs.org/safe-json-parse/4.0.0
npm http GET http://registry.npmjs.org/videojs-font/3.2.0
npm http GET http://registry.npmjs.org/videojs-vtt.js
npm http 200 http://registry.npmjs.org/keycode
npm http GET http://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz
npm http 200 http://registry.npmjs.org/safe-json-parse/4.0.0
npm http GET http://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz
npm http 404 http://registry.npmjs.org/videojs/http-streaming/2.2.4
npm http 200 http://registry.npmjs.org/global/4.3.2
npm http 405 http://registry.npmjs.org/babel/runtime
npm http GET http://registry.npmjs.org/global/-/global-4.3.2.tgz
npm ERR! TypeError: Cannot read property 'latest' of undefined
npm ERR!     at next (/usr/lib/node_modules/npm/lib/cache.js:687:35)
npm ERR!     at /usr/lib/node_modules/npm/lib/cache.js:675:5
npm ERR!     at saved (/usr/lib/node_modules/npm-registry-client/lib/get.js:148:7)
npm ERR!     at /usr/lib/node_modules/graceful-fs/polyfills.js:133:7
npm ERR!     at Object.oncomplete (fs.js:108:15)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 2.6.32-754.33.1.el6.x86_64
npm ERR! command "node" "/usr/bin/npm" "install"
npm ERR! cwd /var/ooiui/ooi-ui
npm ERR! node -v v0.10.48
npm ERR! npm -v 1.3.6
npm ERR! type non_object_property_load
npm http 200 http://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz
npm http 200 http://registry.npmjs.org/videojs-vtt.js
npm http 200 http://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz
npm ERR! Error: No dist in undefined package
npm ERR!     at next (/usr/lib/node_modules/npm/lib/cache.js:746:26)
npm ERR!     at /usr/lib/node_modules/npm/lib/cache.js:739:5
npm ERR!     at saved (/usr/lib/node_modules/npm-registry-client/lib/get.js:148:7)
npm ERR!     at /usr/lib/node_modules/graceful-fs/polyfills.js:133:7
npm ERR!     at Object.oncomplete (fs.js:108:15)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 2.6.32-754.33.1.el6.x86_64
npm ERR! command "node" "/usr/bin/npm" "install"
npm ERR! cwd /var/ooiui/ooi-ui
npm ERR! node -v v0.10.48
npm ERR! npm -v 1.3.6
npm http GET http://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.2.tgz
npm http 404 http://registry.npmjs.org/videojs/xhr/2.5.1
npm http 200 http://registry.npmjs.org/global/-/global-4.3.2.tgz
npm http 200 http://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.2.tgz
npm http 200 http://registry.npmjs.org/videojs-font/3.2.0
npm http GET http://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz
npm http 200 http://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /var/ooiui/ooi-ui/npm-debug.log
npm ERR! not ok code 0

“404”错误代码似乎很清楚意味着 npm 没有从注册表中找到包。这是表演的终结者,还是有前进的道路?提前致谢。

标签: npmnpm-install

解决方案


TL; DR 更新到npm@2.

在撰写本文时,npm 1.3.6 已经 7 岁了。它长期不受支持,并且与当前注册表不兼容的可能性非常高。

相比之下,我注意到您正在运行“仅”四年的 Node.js 0.10.48。虽然它也早已失去支持,但至少 0.10.48 是 0.10 系列中的最新版本。所以这很好。

Node.js 0.10.48 随 npm 2.x 一起提供,因此不知何故,您拥有的 npm 版本比您使用的 Node.js 版本默认附​​带的版本更旧。这通常表明机器上安装了多个版本,并且 PATH 异常可能导致神秘错误。如果你能解决这个问题,它可能会在这里解决你的问题。

上面日志中列出的第一个依赖项是 videojs-wavesurfer 2.11.0。我尝试使用 Node.js 0.10.48 和 npm 1.3.6 安装它。我收到证书错误,因此我(暂时)禁用了 SSL 证书验证。之后,我再次尝试并收到与您类似的错误。

我更新到npm@2然后能够毫无问题地安装该软件包。


推荐阅读