欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nodejs+express的搭建

程序员文章站 2022-06-26 11:29:43
...
  • 安装nodejs

在nodejs官网http://nodejs.cn/download/下载对应的nodejs安装

nodejs+express的搭建 

安装路径根据自己需要,安装nodejs默认会安装npm,npm的作用就是对Node.js依赖的包进行管理,安装完成后cmd查看安装是否成功

nodejs+express的搭建

  •  环境配置

这里的环境配置主要配置的是npm安装的全局模块所在的路径,以及缓存cache的路径,之所以要配置,是因为以后在执行类似:npm install xxxxx -g (-g代表全局安装;-dev代表私有安装;--save工程引入)的安装语句时,会将安装的模块安装到【C:\Users\用户名\AppData\Roaming\npm】路径中,占C盘空间 。

在nodejs的安装路径下新建两个文件夹

nodejs+express的搭建

创建完两个空文件夹之后,打开cmd命令窗口,输入

npm config set prefix "D:\NodeJS\node_global"
npm config set cache "D:\NodeJS\node_cache"

然后添加环境变量“我的电脑”-右键-“属性”-“高级系统设置”-“高级”-“环境变量”

nodejs+express的搭建

用户环境变量中的C:\Users\Admin\AppData\Roaming\npm改成

nodejs+express的搭建

cmd执行npm install express-generator -g全局安装该express-generator

npm install express-generator -g

新建一个工程文件夹如:D:\WorkProject\GameServer

在文件夹内新建一个js文件main.js作为项目的入口脚本。

cmd cd到该文件夹,执行npm init补充相应配置之后会发现文件夹内生成一个package.json配置文件夹

安装需要的依赖部分,删除依赖可以使用npm uninstall xxxx --save-g或者npm uninstall xxxx --save-dev

npm install @types/node --save-dev
npm install cookie-parser --save-g
// ejs界面
npm install ejs --save-g
// 框架部分
npm install express --save-g
// 日志
npm install morgan --save-g

执行完成后查看package.json并且项目中多了文件夹node_modules

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "node main"
  },
  "dependencies": {
    "cookie-parser": "^1.4.5",
    "ejs": "^3.1.3",
    "express": "~4.17.1",
    "morgan": "^1.10.0"
  },
  "author": "admin",
  "license": "ISC",
  "devDependencies": {
    "@types/node": "^14.0.14"
  }
}

如上:mian: main.js是指定的入口文件,script:node main 是指定启动命令。启动项目入口是通过cmd npm run start 执行node main.js。

可以写一个bat文件启动

d:
cd D:\WorkProject\GameServer
npm run start

在项目目录中新建action log static views文件夹分别存放路由文件,日子文件,静态文件,html文件

nodejs+express的搭建

现在可以编写main.js并且配置好对应的文件路径

var express = require('express')
var path = require('path')
var cookieParser = require('cookie-parser')
var morgan = require('morgan')
var ejs = require('ejs')
var fs = require('fs')
var homePage = require('./action/home')

var main = express();

main.set('port', process.env.PORT || 3000)

main.set('views', __dirname + '/views')
main.engine('.html', ejs.__express)
main.set('view engine', 'html')

// 日志
morgan.token('token', function(req, res){
    return req.query.from || '--';
})
morgan.format('log', '===> :method :url :status :token')
var logStream = fs.createWriteStream(path.join(__dirname + '/log', 'console.log'))
main.use(morgan('log', {stream:logStream}));

main.use(express.json());
main.use(express.urlencoded({ extended: false }));
main.use(cookieParser());
main.use(express.static(path.join(__dirname, 'static')));

// 匹配路由
main.use('/', homePage);

// 404页面
main.use(function(req, res, next) {
  let curTime = new Date();
  res.type('text/plain');
  res.status(404);
  res.send('404 - 访问页面不存在\n' + curTime);
});

// 500页面
main.use(function(err, req, res, next){
  let curTime = new Date();
    let errInfo = err.stack;
    res.type('text/plain');
    res.status(500);
    res.send('500 - 服务器发生错误\n' + 'errInfo:' + errInfo + '\n' + curTime)
})

main.listen(main.get('port'), function(){
  console.log('服务正在运行在 http://localhost:' + main.get('port') + '; 按 Ctrl+C 关闭服务')
})

module.exports = main;

demo文件地址链接:https://pan.baidu.com/s/1Eb00CvbfO218Js-amXqWuA

提取码:6rpj