Как правильно отключить эмулятор Firebase в Windows 10

Когда firebase emulator:start запускается в моем терминале vscode powershell, некоторые окна java.exe открываются. Все отлично работает.

Когда я закрываю эмулятор firebase с помощью команды ctrl+c, в терминале появляются журналы, предполагающие, что все предположительно завершается корректно. Вот лог после ^C:

i  emulators: Received SIGINT (Ctrl-C) for the first time. Starting a clean shutdown.
i  emulators: Please wait for a clean shutdown or send the SIGINT (Ctrl-C) signal again to stop right now.
i  Automatically exporting data using --export-on-exit "./data" please wait for the export to finish...
Terminate batch job (Y/N)? i  Found running emulator hub for project une-petite-partie at http://localhost:4400
i  Deleting directory C:\Users\schar\Documents\Programming\Projects\Card Game\data\firestore_export
i  Exporting data to: C:\Users\schar\Documents\Programming\Projects\Card Game\data
i  emulators: Received export request. Exporting data to C:\Users\schar\Documents\Programming\Projects\Card Game\data.
+  emulators: Export complete.
+  Export complete
i  emulators: Shutting down emulators.
i  ui: Stopping Emulator UI
!  Emulator UI has exited upon receiving signal: SIGINT
i  functions: Stopping Functions Emulator
i  hosting: Stopping Hosting Emulator
i  database: Stopping Database Emulator
!  Database Emulator has exited upon receiving signal: SIGINT
i  firestore: Stopping Firestore Emulator
!  Firestore Emulator has exited upon receiving signal: SIGINT
i  pubsub: Stopping Pub/Sub Emulator
!  Pub/Sub Emulator has exited upon receiving signal: SIGINT
i  hub: Stopping emulator hub
i  logging: Stopping Logging Emulator

Там есть подсказка (Y/N), поэтому, если я наберу Y или N, терминал вернется в обычный режим ожидания powershell.

На самом деле окна java.exe остаются открытыми. В этот момент, если я снова запущу firebase emulator:start, я получу сообщение об ошибке, говорящее о том, что порты эмулятора используются. Если я вручную закрою окна java.exe и снова запущу эмулятор, все будет работать как положено.

Я использую Windows 10, powershell и код VS. Мне не нужен хак для очистки портов, так как я могу просто закрыть окна java.exe. Я хочу знать, как закрыть все это одним махом в powershell. Что-то подобное существует? Это проблема, о которой я должен сообщить?


person Samuel Charpentier    schedule 05.01.2021    source источник


Ответы (2)


У меня также была похожая проблема. Я нашел два способа решить эту проблему.

Способ 1:

  1. Найдите порт и идентификатор процесса, используя следующую команду

    netstat -a -o -n

  2. Используйте приведенную ниже команду, чтобы убить этот процесс.

    taskkill /F /PID PROCESS_ID

где PROCESS_ID — это идентификатор процесса, который мы получили на шаге 1.

  1. Запустите эмулятор снова

    firebase emulators:start

Способ 2:

убить весь процесс Java, используя следующую команду.

taskkill /f /im java.exe
person Ankush Chavan    schedule 15.01.2021
comment
Как вы могли бы автоматизировать это при закрытии инструментов в CLI? - person Samuel Charpentier; 17.01.2021
comment
В Windows вы можете написать пакетный скрипт для автоматизации этого. И поместите этот пакетный скрипт в PATH. После этого написанный вами пакетный скрипт будет доступен в виде команды. И вам не нужно запускать эти команды снова и снова. Просто запустите пользовательскую команду, которую вы создали с помощью пакетного сценария. - person Ankush Chavan; 17.01.2021
comment
В Linux вы можете написать bash-скрипт, чтобы сделать то же самое и сделать этот bash-скрипт исполняемым с помощью команды chmod +x <filename>. Поместите этот файл в переменную PATH или каталоги, такие как /bin или /usr/bin, и этот скрипт будет доступен как команда. Таким образом, вы можете автоматизировать его в CLI. - person Ankush Chavan; 17.01.2021

Вот как я это делаю.

  1. CTRL + C в терминале VSCode.
  2. Вручную закрыть окно Java
  3. Нажмите значок корзины обратно в окнах терминала VSCode для задачи.

Из этого состояния я могу снова запустить задачу эмулятора Firebase.

firebase emulators:start

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

Надеюсь, это поможет кому-то. :)

person Gary Carlyle Cook    schedule 10.03.2021