MCPcopy
hub / github.com/wdjungst/react-project / createServer

Function createServer

modules/PublicServerAPI.js:31–72  ·  view source on GitHub ↗
(getApp)

Source from the content-addressed store, hash-verified

29import ErrorMessage from './ErrorMessage'
30
31export function createServer(getApp) {
32 const server = express()
33 const webpackStats = getWebpackStats()
34 server.disable('x-powered-by')
35 server._listen = server.listen
36 server.listen = () => {
37 throw new Error('[react-project]', 'Do not call `server.listen()`, use `server.start()`')
38 }
39
40 server.start = () => {
41 addMiddleware(server)
42 server.all('*', (req, res) => {
43 getApp(req, res, (err, { render, routes }) => {
44 if (err) {
45 onError(err, req, res)
46 } else {
47 match({ routes, location: req.url }, (err, redirect, routerProps) => {
48 if (err) {
49 onError(err, req, res)
50 } else if (redirect) {
51 // TODO: need a way to specify 301, 302, 307 etc. in the route config.
52 // will need to make changes in React Router or history probably
53 res.redirect(redirect.pathname + redirect.search)
54 } else if (routerProps) {
55 sendWithReactRouter({ req, res, render, webpackStats, routerProps })
56 } else {
57 sendNoRoutesMatched(res)
58 }
59 })
60 }
61 })
62 })
63
64 server._listen(PORT, () => {
65 log()
66 log(`NODE_ENV=${process.env.NODE_ENV}`)
67 log(`Express server listening on port`, PORT)
68 })
69 }
70
71 return server
72}
73
74function addMiddleware(server) {
75 if (process.env.NODE_ENV === 'production') {

Callers 1

server.jsFile · 0.85

Calls 6

logFunction · 0.90
getWebpackStatsFunction · 0.85
addMiddlewareFunction · 0.85
getAppFunction · 0.85
onErrorFunction · 0.85
sendWithReactRouterFunction · 0.85

Tested by

no test coverage detected