@@ -10,6 +10,7 @@ var path = require('path')
1010var express = require ( 'express' )
1111var webpack = require ( 'webpack' )
1212var proxyMiddleware = require ( 'http-proxy-middleware' )
13+ var portfinder = require ( 'portfinder' )
1314var webpackConfig = { { #if_or unit e2e} } ( process . env . NODE_ENV === 'testing' || process . env . NODE_ENV === 'production' )
1415 ? require ( './webpack.prod.conf' )
1516 : { { / i f _ o r } } r e q u i r e ( ' ./ webpack. dev . conf ')
@@ -82,17 +83,26 @@ var readyPromise = new Promise(resolve => {
8283// _resolve()
8384// })
8485
85- var server = app . listen ( port , 'localhost' )
86-
87- // for 小程序的文件保存机制
88- require ( 'webpack-dev-middleware-hard-disk' ) ( compiler , {
89- publicPath : webpackConfig . output . publicPath ,
90- quiet : true
86+ module . exports = new Promise ( ( resolve , reject ) => {
87+ portfinder . basePort = port
88+ portfinder . getPortPromise ( )
89+ . then ( newPort => {
90+ if ( port !== newPort ) {
91+ console . log ( `${ port } 端口被占用,开启新端口${ newPort } ` )
92+ }
93+ var server = app . listen ( newPort , 'localhost' )
94+ // for 小程序的文件保存机制
95+ require ( 'webpack-dev-middleware-hard-disk' ) ( compiler , {
96+ publicPath : webpackConfig . output . publicPath ,
97+ quiet : true
98+ } )
99+ resolve ( {
100+ ready : readyPromise ,
101+ close : ( ) => {
102+ server . close ( )
103+ }
104+ } )
105+ } ) . catch ( error => {
106+ console . log ( '没有找到空闲端口,请打开任务管理器杀死进程端口再试' , error )
107+ } )
91108} )
92-
93- module . exports = {
94- ready : readyPromise ,
95- close : ( ) => {
96- server . close ( )
97- }
98- }
0 commit comments