dev-server.js 2.1 KB

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