Fix start command exit behaviour (#39788)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39788 Hotfix for exiting `npx react-native start` when a session is connected. Partially reverts D49422206. This lines back up with the original RN CLI and Expo implementations — explicitly calling `process.exit()`. We still aim to follow this up with graceful server shutdown. Changelog: [Internal] Reviewed By: lunaleaps Differential Revision: D49880226 fbshipit-source-id: d2c76b2de21b9172dfd892141d1f679b808e043d
This commit is contained in:
Родитель
c604f10d4a
Коммит
e1f21fcc4c
|
@ -15,7 +15,6 @@ import {logger} from '@react-native-community/cli-tools';
|
|||
import chalk from 'chalk';
|
||||
import execa from 'execa';
|
||||
import fetch from 'node-fetch';
|
||||
import readline from 'readline';
|
||||
import {KeyPressHandler} from '../../utils/KeyPressHandler';
|
||||
|
||||
const CTRL_C = '\u0003';
|
||||
|
@ -23,13 +22,11 @@ const CTRL_D = '\u0004';
|
|||
|
||||
export default function attachKeyHandlers({
|
||||
cliConfig,
|
||||
serverInstance,
|
||||
devServerUrl,
|
||||
messageSocket,
|
||||
}: {
|
||||
cliConfig: Config,
|
||||
devServerUrl: string,
|
||||
serverInstance: http$Server | https$Server,
|
||||
messageSocket: $ReadOnly<{
|
||||
broadcast: (type: string, params?: Record<string, mixed> | null) => void,
|
||||
...
|
||||
|
@ -40,10 +37,6 @@ export default function attachKeyHandlers({
|
|||
return;
|
||||
}
|
||||
|
||||
readline.emitKeypressEvents(process.stdin);
|
||||
// $FlowIgnore[prop-missing]
|
||||
process.stdin.setRawMode(true);
|
||||
|
||||
const execaOptions = {
|
||||
env: {FORCE_COLOR: chalk.supportsColor ? 'true' : 'false'},
|
||||
};
|
||||
|
@ -88,16 +81,14 @@ export default function attachKeyHandlers({
|
|||
case CTRL_C:
|
||||
case CTRL_D:
|
||||
logger.info('Stopping server');
|
||||
listener?.({pause: true});
|
||||
serverInstance.close(() => {
|
||||
process.emit('SIGINT');
|
||||
process.exit();
|
||||
});
|
||||
keyPressHandler.stopInterceptingKeyStrokes();
|
||||
process.emit('SIGINT');
|
||||
process.exit();
|
||||
}
|
||||
};
|
||||
|
||||
const keyPressHandler = new KeyPressHandler(onPress);
|
||||
const listener = keyPressHandler.createInteractionListener();
|
||||
keyPressHandler.createInteractionListener();
|
||||
keyPressHandler.startInterceptingKeyStrokes();
|
||||
|
||||
logger.log(
|
||||
|
|
|
@ -137,7 +137,6 @@ async function runServer(
|
|||
attachKeyHandlers({
|
||||
cliConfig: ctx,
|
||||
devServerUrl,
|
||||
serverInstance,
|
||||
messageSocket: messageSocketEndpoint,
|
||||
});
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче