代码拉取完成,页面将自动刷新
同步操作将从 小海同学/store-server 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*
* @Author: hai-27
* @Date: 2020-02-07 16:51:56
* @LastEditors: hai-27
* @LastEditTime: 2020-03-04 22:29:53
*/
const Koa = require('koa');
const KoaStatic = require('koa-static');
const KoaBody = require('koa-body');
const Session = require('koa-session');
let { Port, staticDir, uploadDir } = require('./config');
let app = new Koa();
// 处理异常
app.use(async (ctx, next) => {
try {
await next();
} catch (error) {
console.log(error);
ctx.body = {
code: '500',
msg: '服务器未知错误'
}
}
});
// 为静态资源请求重写url
app.use(async (ctx, next) => {
if (ctx.url.startsWith('/public')) {
ctx.url = ctx.url.replace('/public', '');
}
await next();
});
// 使用koa-static处理静态资源
app.use(KoaStatic(staticDir));
// session
let store = {
storage: {},
set (key, session) {
this.storage[key] = session;
},
get (key) {
return this.storage[key];
},
destroy (key) {
delete this.storage[key];
}
}
let CONFIG = {
key: 'koa:session',
maxAge: 86400000,
autoCommit: true,
overwrite: true,
httpOnly: true,
signed: true,
rolling: false,
renew: false,
sameSite: null,
store
}
app.keys = ['session app keys'];
app.use(Session(CONFIG, app));
// 判断是否登录
app.use(async (ctx, next) => {
if (ctx.url.startsWith('/user/')) {
if (!ctx.session.user) {
ctx.body = {
code: '401',
msg: '用户没有登录,请登录后再操作'
}
return;
}
}
await next();
});
app.use(async (ctx, next) => {
ctx.state.user = ctx.session.user;
await next();
});
// 处理请求体数据
app.use(KoaBody({
multipart: true,
// parsedMethods默认是['POST', 'PUT', 'PATCH']
parsedMethods: ['POST', 'PUT', 'PATCH', 'GET', 'HEAD', 'DELETE'],
formidable: {
uploadDir: uploadDir, // 设置文件上传目录
keepExtensions: true, // 保持文件的后缀
maxFieldsSize: 2 * 1024 * 1024, // 文件上传大小限制
onFileBegin: (name, file) => { // 文件上传前的设置
// console.log(`name: ${name}`);
// console.log(file);
}
}
}));
const userRouter = require('./app/router/userRouter');
const resourcesRouter = require('./app/router/resourcesRouter');
const productRouter = require('./app/router/productRouter');
const shoppingCartRouter = require('./app/router/shoppingCartRouter');
const orderRouter = require('./app/router/orderRouter');
const collectRouter = require('./app/router/collectRouter');
app.use(userRouter.routes());
app.use(resourcesRouter.routes());
app.use(productRouter.routes());
app.use(shoppingCartRouter.routes());
app.use(orderRouter.routes());
app.use(collectRouter.routes());
app.use(userRouter.allowedMethods());
app.listen(Port, () => {
console.log(`服务器启动在${ Port }端口`);
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。