mirror of
https://github.com/zhigang1992/create-react-app.git
synced 2026-01-13 09:00:30 +08:00
Handle errors from port detector (#2182)
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
"react-scripts": "./bin/react-scripts.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@timer/detect-port": "1.1.2",
|
||||
"@timer/detect-port": "1.1.3",
|
||||
"address": "1.0.1",
|
||||
"autoprefixer": "7.1.0",
|
||||
"babel-core": "6.24.1",
|
||||
|
||||
59
packages/react-scripts/scripts/start.js
vendored
59
packages/react-scripts/scripts/start.js
vendored
@@ -140,33 +140,42 @@ function run(port) {
|
||||
|
||||
// We attempt to use the default port but if it is busy, we offer the user to
|
||||
// run on a different port. `detect()` Promise resolves to the next free port.
|
||||
detect(DEFAULT_PORT, HOST).then(port => {
|
||||
if (port === DEFAULT_PORT) {
|
||||
run(port);
|
||||
return;
|
||||
}
|
||||
detect(DEFAULT_PORT, HOST).then(
|
||||
port => {
|
||||
if (port === DEFAULT_PORT) {
|
||||
run(port);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isInteractive) {
|
||||
clearConsole();
|
||||
const existingProcess = getProcessForPort(DEFAULT_PORT);
|
||||
const question = {
|
||||
type: 'confirm',
|
||||
name: 'shouldChangePort',
|
||||
message: chalk.yellow(
|
||||
`Something is already running on port ${DEFAULT_PORT}.` +
|
||||
`${existingProcess ? ` Probably:\n ${existingProcess}` : ''}`
|
||||
) + '\n\nWould you like to run the app on another port instead?',
|
||||
default: true,
|
||||
};
|
||||
if (isInteractive) {
|
||||
clearConsole();
|
||||
const existingProcess = getProcessForPort(DEFAULT_PORT);
|
||||
const question = {
|
||||
type: 'confirm',
|
||||
name: 'shouldChangePort',
|
||||
message: chalk.yellow(
|
||||
`Something is already running on port ${DEFAULT_PORT}.` +
|
||||
`${existingProcess ? ` Probably:\n ${existingProcess}` : ''}`
|
||||
) + '\n\nWould you like to run the app on another port instead?',
|
||||
default: true,
|
||||
};
|
||||
|
||||
inquirer.prompt(question).then(answer => {
|
||||
if (answer.shouldChangePort) {
|
||||
run(port);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
inquirer.prompt(question).then(answer => {
|
||||
if (answer.shouldChangePort) {
|
||||
run(port);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log(
|
||||
chalk.red(`Something is already running on port ${DEFAULT_PORT}.`)
|
||||
);
|
||||
}
|
||||
},
|
||||
err => {
|
||||
console.log(
|
||||
chalk.red(`Something is already running on port ${DEFAULT_PORT}.`)
|
||||
chalk.red(`Could not find an open port at ${chalk.bold(HOST)}.`)
|
||||
);
|
||||
console.log('Network error message: ' + err.message || err);
|
||||
console.log();
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user