-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
53 lines (47 loc) · 1.45 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const Koa = require('koa')
const Router = require('koa-router')
const session = require('koa-session')
const next = require('next')
const Redis = require('ioredis')
const auth = require('./server/auth')
const RedisSessionStore = require('./server/session-store')
const api = require('./server/api')
const koaBody = require('koa-body')
const atob = require('atob')
const json = require('./server/json')
//设置node全局增加一个atob方法
global.atob = atob;
//redis client for node
const redis = new Redis({
port: 6379
});
const dev = process.env.NODE_ENV !== 'production';//开发环境
const app = next({ dev })
const handle = app.getRequestHandler()//处理http请求
//完成pages下的编译再响应请求
app.prepare().then(() => {
const server = new Koa()
const router = new Router()
server.use(koaBody())
server.keys = ['Tara develop Github App'];//cookie的签名secret
const SESSION_CONFIG = {
key: 'sid',
store: new RedisSessionStore(redis),
};
server.use(session(SESSION_CONFIG, server))
//读取json文件
json(server)
// 配置处理github OAuth的登录
auth(server)
//api代理请求github数据
api(server)
server.use(router.routes())
server.use(async (ctx) => {
ctx.req.session = ctx.session
await handle(ctx.req, ctx.res)
ctx.respond = false
})
server.listen(3000, _ => {
console.log('koa server running at port 3000')
})
})