main
js 70 lines 1.59 KB
Raw
1 require('ignore-styles');
2 const babelRegister = require('babel-register');
3 const proxy = require('http-proxy-middleware');
4
5 babelRegister({
6 ignore: /\/(build|node_modules)\//,
7 presets: ['react-app'],
8 });
9
10 const express = require('express');
11 const path = require('path');
12
13 const app = express();
14
15 // Application
16 if (process.env.NODE_ENV === 'development') {
17 app.get('/', function (req, res) {
18 // In development mode we clear the module cache between each request to
19 // get automatic hot reloading.
20 for (var key in require.cache) {
21 delete require.cache[key];
22 }
23 const render = require('./render').default;
24 render(req.url, res);
25 });
26 } else {
27 const render = require('./render').default;
28 app.get('/', function (req, res) {
29 render(req.url, res);
30 });
31 }
32
33 // Static resources
34 app.use(express.static(path.resolve(__dirname, '..', 'build')));
35
36 // Proxy everything else to create-react-app's webpack development server
37 if (process.env.NODE_ENV === 'development') {
38 app.use(
39 '/',
40 proxy({
41 ws: true,
42 target: 'http://localhost:3001',
43 })
44 );
45 }
46
47 app.listen(3000, () => {
48 console.log('Listening on port 3000...');
49 });
50
51 app.on('error', function (error) {
52 if (error.syscall !== 'listen') {
53 throw error;
54 }
55
56 var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
57
58 switch (error.code) {
59 case 'EACCES':
60 console.error(bind + ' requires elevated privileges');
61 process.exit(1);
62 break;
63 case 'EADDRINUSE':
64 console.error(bind + ' is already in use');
65 process.exit(1);
66 break;
67 default:
68 throw error;
69 }
70 });