3 const http
= require('node:http');
4 const { AsyncLocalStorage
} = require('node:async_hooks');
6 const Config
= require('./config');
7 const DB
= require('./src/db');
8 const Service
= require('./src/service');
9 const Logger
= require('./src/logger');
10 const { fileScope
} = require('./src/common');
11 const _fileScope
= fileScope(__filename
);
12 const { version
} = require('./package.json');
14 const PORT
= parseInt(process
.env
.PORT
|| 3002);
15 const ADDR
= process
.env
.LISTEN_ADDR
|| '127.0.0.1';
17 (async
function main () {
18 const _scope
= _fileScope('main');
19 let config
, logger
, db
, service
;
21 const asyncLocalStorage
= new AsyncLocalStorage();
22 config
= new Config(process
.env
.NODE_ENV
);
23 logger
= new Logger(config
.logger
, { nodeId: config
.nodeId
}, asyncLocalStorage
);
24 db
= new DB(logger
, config
);
25 await db
.initialize();
26 service
= new Service(logger
, db
, config
, asyncLocalStorage
);
27 await service
.initialize();
29 http
.createServer(async (req
, res
) => {
30 await asyncLocalStorage
.run({}, async () => {
31 await service
.dispatch(req
, res
);
33 }).listen(PORT
, ADDR
, (err
) => {
35 logger
.error(_scope
, 'error starting server', err
);
38 logger
.info(_scope
, 'server started', { version
, listenAddress: ADDR
, listenPort: PORT
});
41 (logger
|| console
).error(_scope
, 'error starting server', e
);