Как остановиться после запуска реакции-запуска скриптов?

Я запустил приложение React с npm start с запуском, определенным в package.json:

{
  "name": "testreactapp",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-scripts": "1.0.10"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

Я хочу остановить это сейчас, не закрывая терминал. Как я могу это сделать?

Пробовал: npm stop testrectapp, но это выдает ошибку, что ему нужен скрипт

Затем попытался: npm run stop со скриптом "stop": "pkill --signal SIGINT testreactapp", который выдает ошибку "pkill не распознается как команда"

Редактировать: запуск ps в bash показывает: PID PPID PGID WINPID TTY UID STIME COMMAND 6652 1 6652 6652 ? 197612 19:52:49 /usr/bin/mintty 1092 1 1092 1092 ? 197612 Jul 25 /usr/bin/mintty 11092 6652 11092 10060 pty1 197612 19:52:49 /usr/bin/bash 13868 1092 13868 992 pty0 197612 Jul 25 /usr/bin/bash 11428 13868 11428 17340 pty0 197612 12:48:27 /usr/bin/ps 11672 1092 1092 11672 ? 197612 Jul 25 /usr/bin/mintty <defunct> Не видите приложение там?

12 ответов

Решение

Нажмите сочетание клавиш для остановки команд терминала (обычно Ctrl+C или Ctrl+Q)

Или, если у вас нет входного доступа к процессу, определите его PID и уничтожьте его:

В Windows:

C:\>Taskkill /PID <PID> /F

В Linux:

$>kill -SIGTERM <PID>

Добавьте это в свой package.json:

"stop": "taskkill -F -IM node.exe"

Удары Ctrl + C остановит запущенное приложение после того, как вы ответите как Y как он просит; Не нужно закрывать свой терминал.

У меня тоже была такая же проблема. Я использовал этот код, чтобы остановить его

taskkill -F -IM node.exe

Просто введите код в терминале

Чтобы убедиться, что процесс завершен, просто введите команду:

      $ killall -9 node

Убьет все процессы с именем «узел». -9использовать ядро ​​​​для уничтожения процесса вместо самого процесса.

См. справочную страницу

У меня такая же проблема на Mac с терминалом, запущенным в коде VS.

CTRL C убивает сервер узла, однако после этого процесс vscode остается подключенным к порту и предотвращает перезапуск на том же порту.

Следующий обходной путь работает для меня на Mac

npx kill-порт 3000

Вы можете вызвать это с другого терминала, и он должен убить сервер узла и любые другие связанные процессы vscode, подключенные к порту, и позволить вам перезапустить сервер на том же порту.

Вы также можете добавить скрипт в package.json:

"stop": "npx kill-port 3000"

Затем вызовите пряжу stop, чтобы остановить ваш сервер.

Если вы используете Git Bash, вы можете получить ошибку неверных аргументов. Вы должны использовать следующий синтаксис.

Чтобы проверить, какой PID убить:

netstat -aon

Найдите 127.0.0.1:3000 в разделе Локальный адрес и запишите PID.

Чтобы убить процесс:

taskkill -f //PID ####

где #### - PID сверху.

Можешь попробоватьctrl+z
После этого типаnpx kill-port <PORT>
Обычно реагируют на порт 3000, но лучше проверить

Просто используйте Ctrl + c и он остановит сервер, просто.

Пошаговый ответ (только для Windows; извините!)...

Шаг 1: найдите процессы, использующие порт (для примеров здесь будет использоваться порт 3000).

      netstat -aon | findstr :3000

Вывод будет примерно таким:

        TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       275368
  TCP    127.0.0.1:3000         127.0.0.1:52462        ESTABLISHED     275368
  TCP    127.0.0.1:52462        127.0.0.1:3000         ESTABLISHED     15760

Шаг 2 : определите идентификатор процесса.

Нам нужны только задачи, которые:

  1. TCP (первая колонка) и
  2. Показать порт 3000 (второй столбец) и
  3. ЯвляютсяLISTENING(четвертый столбец).

В выводе выше это строка № 1, которая является идентификатором процесса 275368 (последний столбец).

Шаг 3 : убить процесс.

Используйте, сf(принудительный) флаг, чтобы завершить идентификатор процесса из шага 2:

      taskkill -f -pid 275368

The taskkillфлаги не чувствительны к регистру, и они могут быть отмечены тире или косой чертой, так что все они эквивалентны:taskkill -f -pid 275368,taskkill -F /PID 275368,taskkill /F /pid 275368, и т. д.

  1. Откройте диспетчер задач (Панель задач щелкните правой кнопкой мыши/нажмите Ctrl + Alt + Delete)

  2. Перейдите на вкладку «Процессы».

  3. Найдите узел. js: серверный JavaScript

  4. Завершите задачу.

работает в macOS, но не работает ctrl + c

  1. открыть терминал в коде vs

  2. щелкните правой кнопкой мыши терминал ИЛИ щелкните правой кнопкой мыши zsh-appname

  3. нажмите последний kill terminal

Другие вопросы по тегам