Node.js npm install express错误提取失败

npm install express导致以下错误

$npm install express
npm ERR! fetch failed https://registry.npmjs.org/debug/-/debug-2.1.0.tgz
npm ERR! fetch failed https://registry.npmjs.org/etag/-/etag-1.5.1.tgz
npm ERR! fetch failed https://registry.npmjs.org/methods/-/methods-1.1.0.tgz
npm ERR! fetch failed https://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz
npm ERR! fetch failed https://registry.npmjs.org/debug/-/debug-2.1.0.tgz
npm ERR! fetch failed https://registry.npmjs.org/debug/-/debug-2.1.0.tgz
npm ERR! Error: Hostname/IP doesn't match certificate's altnames
npm ERR!     at SecurePair.<anonymous> (tls.js:1389:23)
npm ERR!     at SecurePair.emit (events.js:92:17)
npm ERR!     at SecurePair.maybeInitFinished (tls.js:979:10)
npm ERR!     at CleartextStream.read [as _read] (tls.js:471:13)
npm ERR!     at CleartextStream.Readable.read (_stream_readable.js:340:10)
npm ERR!     at EncryptedStream.write [as _write] (tls.js:368:25)
npm ERR!     at doWrite (_stream_writable.js:225:10)
npm ERR!     at writeOrBuffer (_stream_writable.js:215:5)
npm ERR!     at EncryptedStream.Writable.write (_stream_writable.js:182:11)
npm ERR!     at write (_stream_readable.js:601:24)
npm ERR!     at flow (_stream_readable.js:610:7)
npm ERR!     at Socket.pipeOnReadable (_stream_readable.js:642:5)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Linux 3.14.13-c9
npm ERR! command "/home/ubuntu/.nvm/v0.10.33/bin/node" "/home/ubuntu/.nvm/v0.10.33/bin/npm" "install" "express"
npm ERR! cwd /home/ubuntu/workspace
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! not ok code 0

怎么解决这个? INCORRECT答案已经有很多这个问题的重复,我正在用下面的正确答案分享这个问题以便清理.

最佳答案 根本问题(对我和其他许多人来说)是npm本身的过时版本

$npm version
{ http_parser: '1.0',
  node: '0.10.33',
  v8: '3.14.5.9',
  ares: '1.9.0-DEV',
  uv: '0.10.29',
  zlib: '1.2.3',
  modules: '11',
  openssl: '1.0.1j',
  npm: '1.4.28' }

写作时npm的最新版本是2.1.6,所以1.4.28已经过时了.简单地跑

$npm install npm -g
/home/ubuntu/.nvm/v0.10.33/bin/npm -> /home/ubuntu/.nvm/v0.10.33/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.11 /home/ubuntu/.nvm/v0.10.33/lib/node_modules/npm

之后,npm install express工作正常.

$npm install express
express@4.10.5 node_modules/express
├── utils-merge@1.0.0
├── merge-descriptors@0.0.2
├── fresh@0.2.4
├── cookie@0.1.2
├── escape-html@1.0.1
├── range-parser@1.0.2
├── cookie-signature@1.0.5
├── finalhandler@0.3.2
├── vary@1.0.0
├── media-typer@0.3.0
├── parseurl@1.3.0
├── methods@1.1.0
├── serve-static@1.7.1
├── content-disposition@0.5.0
├── path-to-regexp@0.1.3
├── depd@1.0.0
├── qs@2.3.3
├── etag@1.5.1 (crc@3.2.1)
├── on-finished@2.1.1 (ee-first@1.1.0)
├── debug@2.1.0 (ms@0.6.2)
├── send@0.10.1 (destroy@1.0.3, ms@0.6.2, mime@1.2.11)
├── accepts@1.1.4 (negotiator@0.4.9, mime-types@2.0.4)
├── type-is@1.5.4 (mime-types@2.0.4)
└── proxy-addr@1.0.4 (forwarded@0.1.0, ipaddr.js@0.1.5)

很多人认为问题是SSL证书无法正确识别,因此建议使用以下错误,不应使用,因为它们会导致获取时使用不安全的连接:

在npm install express之前运行npm config set registry http://registry.npmjs.org/或npm config set strict-ssl false

点赞