dev-server.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. 'use strict';
  2. const config = require('../config');
  3. if (!process.env.NODE_ENV) {
  4. process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV);
  5. process.noDeprecation = true
  6. }
  7. const opn = require('opn');
  8. const path = require('path');
  9. const express = require('express');
  10. const webpack = require('webpack');
  11. const webpackConfig = require('./webpack.dev.conf');
  12. const port = process.env.PORT || config.dev.port;
  13. const autoOpenBrowser = config.dev.autoOpenBrowser;
  14. const app = express();
  15. const proxyMiddleWare=require('http-proxy-middleware');
  16. const proxy_path='http://192.168.2.164:3000';
  17. const proxy_option ={target:proxy_path,changeOrigin:true};
  18. const compiler = webpack(webpackConfig);
  19. const devMiddleware = require('webpack-dev-middleware')(compiler, {
  20. publicPath: webpackConfig.output.publicPath,
  21. quiet: true
  22. });
  23. const hotMiddleware = require('webpack-hot-middleware')(compiler, {
  24. log: false,
  25. heartbeat: 2000
  26. });
  27. app.use(hotMiddleware);
  28. app.use(require('connect-history-api-fallback')());
  29. app.use(devMiddleware);
  30. const staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory);
  31. app.use(staticPath, express.static('./'));
  32. app.use('/',proxyMiddleWare(proxy_option));
  33. var _resolve;
  34. var _reject;
  35. var readyPromise = new Promise((resolve, reject) => {
  36. _resolve = resolve;
  37. _reject = reject;
  38. });
  39. var server;
  40. var portfinder = require('portfinder');
  41. portfinder.basePort = port;
  42. console.log('> Starting dev server...');
  43. devMiddleware.waitUntilValid(() => {
  44. portfinder.getPort((err, port) => {
  45. if (err) {
  46. _reject(err)
  47. }
  48. process.env.PORT = port;
  49. // var uri = 'http://localhost:' + port;
  50. const uri=`http://localhost:${port}?hospitalId=-1`;
  51. console.log('> Listening at ' + uri + '\n');
  52. // when env is testing, don't need open it
  53. if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
  54. opn(uri)
  55. }
  56. server = app.listen(port);
  57. _resolve();
  58. })
  59. });
  60. module.exports = {
  61. ready: readyPromise,
  62. close: () => {
  63. server.close()
  64. }
  65. };