MCPcopy Index your code
hub / github.com/redfin/react-server / startHtmlServer

Function startHtmlServer

packages/react-server-cli/src/commands/start.js:63–125  ·  view source on GitHub ↗
(serverRoutes, port, bindIp, httpsOptions, customMiddlewarePath)

Source from the content-addressed store, hash-verified

61// http://host:port/. returns an object with two properties, started and stop;
62// see the default function doc for explanation.
63const startHtmlServer = (serverRoutes, port, bindIp, httpsOptions, customMiddlewarePath) => {
64 const server = express();
65 const httpServer = httpsOptions ? https.createServer(httpsOptions, server) : http.createServer(server);
66 let middlewareSetup = (server, rsMiddleware) => {
67 server.use(compression());
68 server.use(bodyParser.urlencoded({ extended: false }));
69 server.use(bodyParser.json());
70 server.use(helmet());
71 rsMiddleware();
72 };
73
74 return {
75 stop: serverToStopPromise(httpServer),
76 started: new Promise((resolve, reject) => {
77 logger.info("Starting HTML server...");
78
79 let rsMiddlewareCalled = false;
80 const rsMiddleware = () => {
81 rsMiddlewareCalled = true;
82
83 expressState.extend(server);
84
85 // parse cookies into req.cookies property
86 server.use(cookieParser());
87
88 // sets the namespace that data will be exposed into client-side
89 // TODO: express-state doesn't do much for us until we're using a templating library
90 server.set('state namespace', '__reactServerState');
91
92 server.use((req, res, next) => {
93 reactServer.middleware(req, res, next, require(serverRoutes));
94 });
95 };
96
97 if (customMiddlewarePath) {
98 const customMiddlewareDirAb = path.resolve(process.cwd(), customMiddlewarePath);
99 middlewareSetup = require(customMiddlewareDirAb).default;
100 }
101
102 middlewareSetup(server, rsMiddleware);
103
104 if (!rsMiddlewareCalled) {
105 console.error("Error react-server middleware was never setup in custom middleware function");
106 reject("Custom middleware did not setup react-server middleware");
107 return;
108 }
109
110 httpServer.on('error', (e) => {
111 console.error("Error starting up HTML server");
112 console.error(e);
113 reject(e);
114 });
115 httpServer.listen(port, bindIp, (e) => {
116 if (e) {
117 reject(e);
118 return;
119 }
120 logger.info(`Started HTML server over ${httpsOptions ? "HTTPS" : "HTTP"} on ${bindIp}:${port}`);

Callers 1

startServersFunction · 0.85

Calls 2

serverToStopPromiseFunction · 0.85
middlewareSetupFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…