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:
Alex Hunt 2023-10-03 16:21:58 -07:00 коммит произвёл Facebook GitHub Bot
Родитель c604f10d4a
Коммит e1f21fcc4c
2 изменённых файлов: 4 добавлений и 14 удалений

Просмотреть файл

@ -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,
});
}