The main problem (for me and many others) is an outdated version of npm itself
$ 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' }
The latest version of npm at the time of writing is 2.1.6, so 1.4.28 is deprecated. Just run
$ 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
After that, npm install express works fine.
$ 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 run npm config set registry http://registry.npmjs.org/ npm config set strict-ssl false