app2-api/server.js

77 lines
2.2 KiB
JavaScript
Raw Normal View History

2019-04-15 10:13:17 +00:00
#!/usr/bin/env node
'use strict';
const http = require('http');
2019-04-15 15:58:58 +00:00
const { assign, toLower } = require('lodash');
const config = require('./config');
const { express, logger, models } = require('./core');
const currentState = assign({
launchedAt: Date.now(),
appPath: process.cwd(),
host: process.env.HOST || process.env.HOSTNAME || 'localhost',
port: process.env.PORT || 1337,
environment: toLower(process.env.NODE_ENV) || 'development',
connections: {}
}, config);
function stop(server) {
// Destroy server and available connections.
if (server) {
server.close();
2019-04-15 10:13:17 +00:00
}
2019-04-15 15:58:58 +00:00
process.send('stop');
// Kill process.
process.exit(1);
}
2019-04-15 10:13:17 +00:00
2019-04-15 15:58:58 +00:00
const server = http.createServer(express);
server.on('connection', conn => {
const key = conn.remoteAddress + ':' + conn.remotePort;
currentState.connections[key] = conn;
conn.on('close', () => {
delete currentState.connections[key];
});
});
server.on('error', err => {
if (err.code === 'EADDRINUSE') {
logger.debug(`⛔️ Server wasn't able to start properly.`);
logger.error(`The port ${err.port} is already used by another application.`);
stop(server);
return;
2019-04-15 10:13:17 +00:00
}
2019-04-15 15:58:58 +00:00
console.error(err);
});
try {
2019-07-09 12:52:22 +00:00
models.sequelize.sync({ force: true }).then(() => {
2019-04-15 15:58:58 +00:00
// Launch server.
server.listen(currentState.port, (err) => {
if (err) {
logger.debug(`⚠️ Server wasn't able to start properly.`);
logger.error(err);
return stop(server);
2019-04-15 10:13:17 +00:00
}
2019-04-15 15:58:58 +00:00
logger.info('Time: ' + new Date());
logger.info('Launched in: ' + (Date.now() - currentState.launchedAt) + ' ms');
logger.info('Environment: ' + currentState.environment);
logger.info('Process PID: ' + process.pid);
//logger.info(`Version: ${this.config.info.strapi} (node v${this.config.info.node})`);
logger.info('To shut down your server, press <CTRL> + C at any time');
logger.info(`⚡️ Server: http://${currentState.host}:${currentState.port}`);
2019-04-15 15:58:58 +00:00
});
});
} catch (err) {
logger.debug(`⛔️ Server wasn't able to start properly.`);
logger.error(err);
console.error(err);
stop(server);
2019-04-15 10:13:17 +00:00
}