main
js 73 lines 1.68 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 import('./render.js').then(({default: render}) => {
24 render(req.url, res);
25 });
26 });
27 } else {
28 import('./render.js').then(({default: render}) => {
29 app.get('/', function (req, res) {
30 render(req.url, res);
31 });
32 });
33 }
34
35 // Static resources
36 app.use(express.static(path.resolve(__dirname, '..', 'build')));
37
38 // Proxy everything else to create-react-app's webpack development server
39 if (process.env.NODE_ENV === 'development') {
40 app.use(
41 '/',
42 proxy.createProxyMiddleware({
43 ws: true,
44 changeOrigin: true,
45 target: 'http://127.0.0.1:3001',
46 })
47 );
48 }
49
50 app.listen(3000, () => {
51 console.log('Listening on port 3000...');
52 });
53
54 app.on('error', function (error) {
55 if (error.syscall !== 'listen') {
56 throw error;
57 }
58
59 var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
60
61 switch (error.code) {
62 case 'EACCES':
63 console.error(bind + ' requires elevated privileges');
64 process.exit(1);
65 break;
66 case 'EADDRINUSE':
67 console.error(bind + ' is already in use');
68 process.exit(1);
69 break;
70 default:
71 throw error;
72 }
73 });