1 |
|
2 |
|
3 | import webpack from 'webpack';
|
4 | import express from 'express';
|
5 | import history from 'connect-history-api-fallback';
|
6 | import httpProxy from 'http-proxy';
|
7 |
|
8 | import { HOST_MAP } from './config/endpoint';
|
9 |
|
10 | import config from './webpack.config';
|
11 |
|
12 | const host = HOST_MAP[process.env.PROXY];
|
13 |
|
14 | const app = express();
|
15 | const compiler = webpack(config);
|
16 |
|
17 | app.use(history());
|
18 |
|
19 | app.use(
|
20 | require('webpack-dev-middleware')(compiler, {
|
21 | publicPath: config.output.publicPath,
|
22 | stats: {
|
23 | chunks: false,
|
24 | colors: true,
|
25 | },
|
26 | }),
|
27 | );
|
28 |
|
29 | app.use(require('webpack-hot-middleware')(compiler));
|
30 |
|
31 | app.listen(3000, err => {
|
32 | if (err) {
|
33 | return console.error(err);
|
34 | }
|
35 |
|
36 | const proxyServer = httpProxy.createProxyServer({
|
37 | target: host,
|
38 | changeOrigin: true,
|
39 | });
|
40 |
|
41 | proxyServer.on('proxyReq', proxyReq => {
|
42 | proxyReq.setHeader('Origin', host);
|
43 | });
|
44 |
|
45 | proxyServer.on('proxyRes', proxyRes => {
|
46 | proxyRes.headers['Access-Control-Allow-Headers'] = 'content-type, authorization';
|
47 | proxyRes.headers['Access-Control-Allow-Methods'] = 'PUT, POST, GET, DELETE';
|
48 | proxyRes.headers['Access-Control-Allow-Origin'] = 'http://localhost:3000';
|
49 | });
|
50 |
|
51 | console.log(`Proxy ${process.env.PROXY} server ${host} start at localhost:9000`);
|
52 |
|
53 | proxyServer.listen(9000);
|
54 |
|
55 | return console.log('Listening at http://localhost:3000/');
|
56 | });
|