安装express

安装express

[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

本文分享自微信公众号 - 从零开始的linux(gh_4a9d788f5f27)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Node入门教程(5)第四章:global 全局变量

    global - 全局变量 全局对象(global object),不要和 全局的对象( global objects )或称标准内置对象混淆。这里说的全局的对...

    老马
  • Linux下安装Node.js

    手动二进制包的安装方法 一般来说我们在Node的官网上是找不到Linux的Deb包,或者是Rpm包的,他针对Windows和mac都有二进制的安装包,但是Li...

    lwen
  • Node入门教程(7)第五章:node 模块化(下) npm与yarn详解

    Node的包管理器 JavaScript缺少包结构的定义,而CommonJS定义了一系列的规范。而NPM的出现则是为了在CommonJS规范的基础上,实现解决包...

    老马
  • Node入门教程(6)第五章:node 模块化(上)模块化演进

    node 模块化 JS 诞生的时候,仅仅是为了实现网页表单的本地校验和简单的 dom 操作处理。所以并没有模块化的规范设计。 项目小的时候,我们可以通过命名空间...

    老马
  • Node入门教程(11)第九章:Node 的网络模块

    net网络模块 net模块是node对TCP或者IPC开发的封装,包括了客户端和服务器端相关API。对于阅读本文,请您有一定的网络编程的基础。 您需要已经了解了...

    老马
  • 【笔记】nodejs读取JSON,数组转树

    const fs = require('fs'); // --------------- 读取源文件 --------------- const origin...

    SmileSmith
  • Node入门教程(9)第七章:NodeJs的文件处理

    Node的文件处理涉及到前面说的ptah模块,以及fs文件系统、stream流处理、Buffer缓冲器等模块。内容可能比较多,相关内容请以官网文档为主,此处主要...

    老马
  • 01基于位置的用户画像初探|数据爬取及可视化系列

    研究了1个月的nodejs爬虫,数据提取,mongodb数据库,数据可视化等等内容,我终于写了第一篇关于数据的文章,哈~ 这个系列的文章会从: 技能 数据来源 ...

    mixlab
  • Node入门教程(10)第八章:Node 的事件处理

    Node中大量运用了事件回调,所以Node对事件做了单独的封装。所有能触发事件的对象都是 EventEmitter 类的实例,所以上一篇我们提到的文件操作的可读...

    老马
  • 第一章:NodeJS 概述

    Node 概述 什么是 Node Node.js® is a JavaScript runtime built on Chrome's V8 JavaScrip...

    老马

扫码关注云+社区

领取腾讯云代金券