-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
70 lines (58 loc) · 1.94 KB
/
app.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const Koa = require('koa');
const logger = require('logger');
const koaLogger = require('koa-logger');
const config = require('config');
const loader = require('loader');
const convert = require('koa-convert');
const ctRegisterMicroservice = require('ct-register-microservice-node');
const ErrorSerializer = require('serializers/error.serializer');
const koaBody = require('koa-body')({
multipart: true,
jsonLimit: '50mb',
formLimit: '50mb',
textLimit: '50mb'
});
const app = new Koa();
require('cron/cron');
app.use(convert(koaBody));
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
let error = err;
try {
error = JSON.parse(err);
} catch (e) {
logger.error('Error parse');
}
ctx.status = error.status || 500;
logger.error(error);
ctx.body = ErrorSerializer.serializeError(ctx.status, error.message);
if (process.env.NODE_ENV === 'prod' && this.status === 500) {
ctx.body = 'Unexpected error';
}
ctx.response.type = 'application/vnd.api+json';
}
});
app.use(koaLogger());
loader.loadRoutes(app);
const instance = app.listen(process.env.PORT, () => {
ctRegisterMicroservice.register({
info: require('../microservice/register.json'),
swagger: require('../microservice/public-swagger.json'),
mode: (process.env.CT_REGISTER_MODE && process.env.CT_REGISTER_MODE === 'auto') ? ctRegisterMicroservice.MODE_AUTOREGISTER : ctRegisterMicroservice.MODE_NORMAL,
framework: ctRegisterMicroservice.KOA2,
app,
logger,
name: config.get('service.name'),
ctUrl: process.env.CT_URL,
url: process.env.LOCAL_URL,
token: process.env.CT_TOKEN,
active: true,
}).then(() => {}, (err) => {
logger.error(err);
process.exit(1);
});
});
logger.info('Server started in ', process.env.PORT);
module.exports = instance;