/* eslint-disable no-console */ const express = require('express'); const proxyMiddleware = require('http-proxy-middleware'); const next = require('next'); const envVars = require('/tmp/hyperglass.env.json'); const { configFile } = envVars; const config = require(String(configFile)); const { NODE_ENV: env, _HYPERGLASS_URL_: envUrl } = config; const devProxy = { '/api/query/': { target: envUrl + 'api/query/', pathRewrite: { '^/api/query/': '' } }, '/images': { target: envUrl + 'images', pathRewrite: { '^/images': '' } }, '/custom': { target: envUrl + 'custom', pathRewrite: { '^/custom': '' } }, }; const port = parseInt(process.env.PORT, 10) || 3000; const dev = env !== 'production'; const app = next({ dir: '.', // base directory where everything is, could move to src later dev, }); const handle = app.getRequestHandler(); let server; app .prepare() .then(() => { server = express(); // Set up the proxy. if (dev && devProxy) { Object.keys(devProxy).forEach(function(context) { server.use(proxyMiddleware(context, devProxy[context])); }); } // Default catch-all handler to allow Next.js to handle all other routes server.all('*', (req, res) => handle(req, res)); server.listen(port, err => { if (err) { throw err; } console.log(`> Ready on port ${port} [${env}]`); }); }) .catch(err => { console.log('An error occurred, unable to start the server'); console.log(err); });