app2-api/server.js

81 lines
2.2 KiB
JavaScript
Raw Normal View History

2019-04-15 10:13:17 +00:00
#!/usr/bin/env node
2022-02-23 18:27:58 +00:00
"use strict";
2019-04-15 10:13:17 +00:00
2022-02-23 18:27:58 +00:00
const http = require("http");
const moment = require("moment");
const { assign, toLower } = require("lodash");
2019-04-15 15:58:58 +00:00
2022-02-23 18:27:58 +00:00
const config = require("./config");
const { express, logger, models } = require("./core");
2019-04-15 15:58:58 +00:00
2022-02-23 18:27:58 +00:00
const currentState = assign(
{
2019-04-15 15:58:58 +00:00
launchedAt: Date.now(),
appPath: process.cwd(),
2019-07-22 10:24:51 +00:00
//host: process.env.HOST || process.env.HOSTNAME || 'localhost',
//port: process.env.PORT || 18888,
2022-02-23 18:27:58 +00:00
environment: toLower(process.env.NODE_ENV) || "development",
connections: {},
},
config
);
2019-04-15 15:58:58 +00:00
function stop(server) {
2022-02-23 18:27:58 +00:00
// Destroy server and available connections.
if (server) {
server.close();
}
2019-04-15 10:13:17 +00:00
2022-02-23 18:27:58 +00:00
process.send("stop");
// Kill process.
process.exit(1);
2019-04-15 15:58:58 +00:00
}
2019-04-15 10:13:17 +00:00
2022-02-23 18:27:58 +00:00
moment.locale("es");
2019-04-15 15:58:58 +00:00
const server = http.createServer(express);
2022-02-23 18:27:58 +00:00
server.on("connection", (conn) => {
const key = conn.remoteAddress + ":" + conn.remotePort;
currentState.connections[key] = conn;
2019-04-15 15:58:58 +00:00
2022-02-23 18:27:58 +00:00
conn.on("close", () => {
delete currentState.connections[key];
});
2019-04-15 15:58:58 +00:00
});
2022-02-23 18:27:58 +00:00
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
2022-02-23 18:27:58 +00:00
console.error(err);
2019-04-15 15:58:58 +00:00
});
try {
2022-02-23 18:27:58 +00:00
models.sequelize.sync({ force: false }).then(() => {
// Launch server.
server.listen(currentState.server.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
2022-02-23 18:27:58 +00:00
logger.info("Time: " + moment().toISOString());
logger.info("Launched in: " + (moment() - 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.server.hostname}:${currentState.server.port}`);
2019-04-15 15:58:58 +00:00
});
2022-02-23 18:27:58 +00:00
});
2019-04-15 15:58:58 +00:00
} catch (err) {
2022-02-23 18:27:58 +00:00
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
}