Skip to content

Instantly share code, notes, and snippets.

@tgfjt
Created October 10, 2020 02:56
Show Gist options
  • Save tgfjt/151d163d2e588dae82e2e6a5302e0833 to your computer and use it in GitHub Desktop.
Save tgfjt/151d163d2e588dae82e2e6a5302e0833 to your computer and use it in GitHub Desktop.
const express = require("express");
const next = require("next");
const compression = require("compression");
const helmet = require("helmet");
const morgan = require("morgan");
const { logger } = require('./logger');
async function startSever() {
const dev = process.env.NODE_ENV === 'development';
const app = next({ dev });
const handle = app.getRequestHandler();
const port = process.env.PORT || 4000;
try {
await app.prepare();
const server = express();
server.use(express.json());
server.use(express.urlencoded({ extended: true }));
server.use(compression());
server.use(helmet({
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'", "'unsafe-eval'", 'wss://*.firebaseio.com', "https://*.googleapis.com", 'https://apis.google.com'],
styleSrc: ["'self'", "'unsafe-inline'", 'https:'],
fontSrc: ["'self'", 'https:', 'data:'],
imgSrc: ["'self'", 'https:', 'data:'],
scriptSrc: ["'self'", 'https://*.firebaseio.com', 'https://apis.google.com', "'unsafe-inline'", "'unsafe-eval'"],
frameSrc: ["'self'", 'https://*.firebaseio.com','https://*.firebaseapp.com'],
}
}
}));
server.use(morgan('short', { stream: logger.stream }));
server.all("*", (req, res) => {
return handle(req, res);
});
server.listen(port, (err) => {
if (err) throw err;
logger.info({ port }, 'Hello! starting server');
});
} catch (reason) {
console.error(reason.stack);
process.exit(1);
}
}
startSever();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment