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 

如何解决这个问题? 这个问题已经有很多重复的不正确的答案,我与以下正确的答案分享这个清除事情。

潜在的问题(对我和其他许多人来说)是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安装快递工作正常。

 $ 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安装之前运行npm config set registry http://registry.npmjs.org/或npm config set strict-ssl false