代码拉取完成,页面将自动刷新
// 导入express模块
const express = require('express')
// 引入cors处理跨域
const cors = require('cors')
// 创建服务器实例
var app = express()
// 引用webSocket
var wss = require('./Socket/index')
// 引入ip跟端口
const myIp = require('./config/index')
// 引入日志
const logger = require('./config/logConfig')
// 配置urlencoded请求处理
app.use(express.urlencoded({extended: false}))
// 解析token
const { expressjwt } = require('express-jwt')
// 定义secret 秘钥 用于讲jwttoken进行加密解密的钥匙,防破解 越复杂越好
const secretKey = 'lmNodeExpress ++'
//解除跨域
app.use(cors())
// 配置解析jwt字符串还原成json对象中间件
// unless配置所有路径以[]数组内都不需要授权令牌
app.use(expressjwt({algorithms: ['HS256'], secret: secretKey}).unless({path: [/^\/login\//, /^\/public\//]}))
//使用express框架自带的static中间件,用来管理静态资源
app.use('/public', express.static(__dirname + '/public'));
app.use('/public/apidoc', express.static('apidoc'));
// 全局中间件处理 如果设置了res.setHeader('Content-Type','*'),则post请求会报错 TypeError: invalid media type
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*")
res.setHeader('Access-Control-Request-Headers', '*')
// 解决中文乱码问题
res.setHeader('Content-Type', 'text/html;charset=utf-8');
res.setHeader('Content-type', 'application/json;charset=utf-8')
req.secretKey = secretKey
next()
})
// 引入路由
const User = require('./router/router/user')
const login = require('./router/router/login')
const file = require('./router/router/file')
const msg = require('./router/router/msg')
const meme = require('./router/router/meme')
const fileadmin = require('./router/router/fileAdmin')
app.use('/user', User)
app.use('/login', login)
app.use('/file', file)
app.use('/msg', msg)
app.use('/meme', meme)
app.use('/fileadmin', fileadmin)
// 全局错误处理
app.use((err, req, res, next) => {
if (err.name === 'UnauthorizedError') {
res.statusCode = 401
logger.error('401 token已过期')
return res.send({ message: 'token已过期'})
}
logger.error('500' + err.message)
res.statusCode = 500
res.send({
message: err.message
})
})
let str = `
'##:::::'##:'##::::'##:'########:'########::'########:'########::'####:
##:'##: ##: ##:::: ##: ##.....:: ##.... ##: ##.....:: ##.... ##:. ##::
##: ##: ##: ##:::: ##: ##::::::: ##:::: ##: ##::::::: ##:::: ##:: ##::
##: ##: ##: #########: ######::: ########:: ######::: ########::: ##::
##: ##: ##: ##.... ##: ##...:::: ##.. ##::: ##...:::: ##.....:::: ##::
##: ##: ##: ##:::: ##: ##::::::: ##::. ##:: ##::::::: ##::::::::: ##::
. ###. ###:: ##:::: ##: ########: ##:::. ##: ########: ##::::::::'####:
:...::...:::..:::::..::........::..:::::..::........::..:::::::::....::
`
// GET Params 请求直接通过req.query 获取参数
// POST 接收 application/x-www-form-urlencoded 请求头 通过req.body 接收参数
// token 解析通过 req.auth 里面有当前token相关用户的信息
app.listen(myIp.port, () => {
console.log(str)
logger.info(`服务已开启访问: ${myIp.ip}:${myIp.port}`)
logger.info(`接口文档已开启访问: ${myIp.ip}:${myIp.port}/public/apidoc`)
})
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。