安装express

2018-04-25 16:25:54 浏览数 (1)

安装express

代码语言:javascript复制
[root@alex ~]#yum -y install npm
[root@alex example]# yum install nodejs
[root@alex ~]# node -v
v5.5.0
[root@alex ~]# mkdir example
[root@alex ~]# cd example/
[root@alex example]# npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (example) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /root/example/package.json:

{
  "name": "example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this ok? (yes) 
[root@alex example]# ll
total 4
-rw-r--r-- 1 root root 203 Feb 26 02:17 package.json
[root@alex example]# npm install express --save
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* ▄ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▌ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▀ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▐ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadRequestedDeps → fetch ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadRequestedDeps → netwo ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadRequestedDeps → fetch ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadRequestedDeps → netwo ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadRequestedDeps         ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → request    ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → request    ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → network    ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → 200        ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → resolveWit ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → addNamed   ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → get        ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → headers    ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → get        ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → fetch      ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → fetch      ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → addNameRan ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → afterAdd   ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → cache      ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → afterAdd   ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → afterAdd   ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → network    ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → afterAdd   ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → afterAdd   ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → fetchAndSh ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → network    ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → 200        ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → fetch      ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → network    ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → fetch      ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → afterAdd   ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → network    ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:vary → fetch      ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → requ ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → 200  ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → fetc ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → fetc ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → afte ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → 200  ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → fetc ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → fetc ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → netw ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → netw ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:negotiator → fetc ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:mime-db → request ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:mime-db → 200     ▐ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:mime-db → fetch   ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:mime-db → network ▌ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:mime-db → fetch   ▀ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:mime-db → afterAd ▄ ╢████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → reques ▄ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → networ ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → fetch  ▄ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → networ ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → fetch  ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → networ ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → afterA ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:raw-body → fetchA ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → request      ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → network      ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → network      ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → network      ▄ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → network      ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → 200          ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → fetch        ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ms → fetch        ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:setprototypeof →  ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:setprototypeof →  ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:setprototypeof →  ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:setprototypeof →  ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ee-first → reques ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ee-first → 200    ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ee-first → fetch  ▄ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ee-first → fetch  ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:unpipe → request  ▄ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:unpipe → 200      ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:unpipe → fetch    ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:unpipe → fetch    ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → req ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → net ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → fet ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → fet ▄ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → net ▌ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → net ▀ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:media-typer → fet ▐ ╢█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → reque ▀ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → netwo ▐ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → fetch ▌ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → netwo ▀ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → fetch ▐ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → after ▌ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → fetch ▀ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → fetch ▐ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░░loadDep:ipaddr.js → netwo ▄ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░loadDep:forwarded         ▀ ╢██████████████████░░░░░░░░░░░░░░░░░░░░░░loadDep:mime → request    ▄ ╢████████████████████░░░░░░░░░░░░░░░░░loadDep:mime → 200        ▌ ╢████████████████████░░░░░░░░░░░░░░░░░loadDep:mime → fetch      ▐ ╢████████████████████░░░░░░░░░░░░░░░░░░loadDep:mime → fetch      ▄ ╢████████████████████░░░░░░░░░░░░░░░░░loadDep:mime → fetch      ▌ ╢████████████████████░░░░░░░░░░░░░░░░░loadDep:mime → network    ▄ ╢████████████████████░░░░░░░░░░░░░░░░░loadAllDepsIntoIdealTree  ▌ ╢█████████████████████████████extract                   ▀ ╢█████████████████████████████extract → unbuild         ▐ ╢█████████████████████████████extract → gunzTarPerm     ▐ ╢█████████████████████████████extract → gunzTarPerm     ▄ ╢████████████████████████████extract → gunzTarPerm     ▐ ╢█████████████████████████████extract → gunzTarPerm     ▄ ╢████████████████████████████extract → gunzTarPerm     ▌ ╢████████████████████████████extract:setprototypeof    ▐ ╢█████████████████████████████extract:ms → gunzTarPerm  ▀ ╢████████████████████████████extract:send → gunzTarPer ▄ ╢████████████████████████████extract:express           ▐ ╢█████████████████████████████preinstall → lifecycle    ▀ ╢████████████████████████████build                     ▄ ╢█████████████████████████████build:path-to-regexp → li ▀ ╢████████████████████████████install:etag → install    ▄ ╢████████████████████████████postinstall:setprototypeo ▌ ╢█████████████████████████████
*/
runTopLevelLifecycles     ▄ ╢█████████████████████████████
example@1.0.0 /root/example
└─┬ express@4.16.2 
  ├─┬ accepts@1.3.4 
  │ ├─┬ mime-types@2.1.18 
  │ │ └── mime-db@1.33.0 
  │ └── negotiator@0.6.1 
  ├── array-flatten@1.1.1 
  ├─┬ body-parser@1.18.2 
  │ ├── bytes@3.0.0 
  │ ├─┬ http-errors@1.6.2 
  │ │ ├── depd@1.1.1 
  │ │ ├── inherits@2.0.3 
  │ │ └── setprototypeof@1.0.3 
  │ ├── iconv-lite@0.4.19 
  │ └── raw-body@2.3.2 
  ├── content-disposition@0.5.2 
  ├── content-type@1.0.4 
  ├── cookie@0.3.1 
  ├── cookie-signature@1.0.6 
  ├─┬ debug@2.6.9 
  │ └── ms@2.0.0 
  ├── depd@1.1.2 
  ├── encodeurl@1.0.2 
  ├── escape-html@1.0.3 
  ├── etag@1.8.1 
  ├─┬ finalhandler@1.1.0 
  │ └── unpipe@1.0.0 
  ├── fresh@0.5.2 
  ├── merge-descriptors@1.0.1 
  ├── methods@1.1.2 
  ├─┬ on-finished@2.3.0 
  │ └── ee-first@1.1.1 
  ├── parseurl@1.3.2 
  ├── path-to-regexp@0.1.7 
  ├─┬ proxy-addr@2.0.3 
  │ ├── forwarded@0.1.2 
  │ └── ipaddr.js@1.6.0 
  ├── qs@6.5.1 
  ├── range-parser@1.2.0 
  ├── safe-buffer@5.1.1 
  ├─┬ send@0.16.1 
  │ ├── destroy@1.0.4 
  │ └── mime@1.4.1 
  ├── serve-static@1.13.1 
  ├── setprototypeof@1.1.0 
  ├── statuses@1.3.1 
  ├─┬ type-is@1.6.16 
  │ └── media-typer@0.3.0 
  ├── utils-merge@1.0.1 
  └── vary@1.1.2 

runTopLevelLifecycles     ▄ ╢█████████████████████████████
npm WARN EPACKAGEJSON example@1.0.0 No description
runTopLevelLifecycles     ▌ ╢█████████████████████████████
npm WARN EPACKAGEJSON example@1.0.0 No repository field.
runTopLevelLifecycles     ▀ ╢█████████████████████████████
[root@alex example]# ll
total 8
drwxr-xr-x 50 root root 4096 Feb 26 02:18 node_modules
-rw-r--r--  1 root root  253 Feb 26 02:18 package.json
[root@alex example]# vim index.js
var express = require('express');
var app = express();

app.get('', function(req, res){
    res.send('Hello');
});

var server = app.listen(2000, function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log('Example listening at http://%s:%s', host, port);
});
[root@alex example]# node
node                             node_version_has_solaris_binary
[root@alex example]# node index.js 
Example listening at http://:::2000

0 人点赞