@@ -14,6 +14,7 @@ const path = require('path');
1414const url = require ( 'url' ) ;
1515const chalk = require ( 'chalk' ) ;
1616const detect = require ( 'detect-port-alt' ) ;
17+ const isRoot = require ( 'is-root' ) ;
1718const inquirer = require ( 'inquirer' ) ;
1819const clearConsole = require ( './clearConsole' ) ;
1920const formatWebpackMessages = require ( './formatWebpackMessages' ) ;
@@ -378,14 +379,19 @@ function choosePort(host, defaultPort) {
378379 if ( port === defaultPort ) {
379380 return resolve ( port ) ;
380381 }
382+ const message = process . platform !== 'win32' &&
383+ defaultPort < 1024 &&
384+ ! isRoot ( )
385+ ? `Admin permissions are required to run a server on a port below 1024.`
386+ : `Something is already running on port ${ defaultPort } .` ;
381387 if ( isInteractive ) {
382388 clearConsole ( ) ;
383389 const existingProcess = getProcessForPort ( defaultPort ) ;
384390 const question = {
385391 type : 'confirm' ,
386392 name : 'shouldChangePort' ,
387393 message : chalk . yellow (
388- `Something is already running on port ${ defaultPort } .` +
394+ message +
389395 `${ existingProcess ? ` Probably:\n ${ existingProcess } ` : '' } `
390396 ) + '\n\nWould you like to run the app on another port instead?' ,
391397 default : true ,
@@ -398,9 +404,7 @@ function choosePort(host, defaultPort) {
398404 }
399405 } ) ;
400406 } else {
401- console . log (
402- chalk . red ( `Something is already running on port ${ defaultPort } .` )
403- ) ;
407+ console . log ( chalk . red ( message ) ) ;
404408 resolve ( null ) ;
405409 }
406410 } ) ,
0 commit comments