Как закрыть приложение React на выходе приложения Electron - PullRequest
1 голос
/ 19 сентября 2019

У меня есть приложение Electron + React, которое работает на порте 3000. Когда я вызываю метод app.quit из файла Electron start.js, он выходит из Electron, но я все еще вижу, что 0.0.0.0:3000 находится вСЛУШАТЬ состояние из netstat -ao.

Я работаю в Windows 10 и пробовал app.exit (0) из электронного файла, однако приложение React все еще доступно из браузера, и netstat -ao показывает 0.0.0.0:3000в состоянии СЛУШАТЬ.

  "scripts": {
    "start": "nf start -p 3000",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "electron": "electron .",
    "electron-start": "node src/start-react",
    "react-start": "SET BROWSER=none&&react-scripts start",
    "pack": "build --dir",
    "dist": "npm run build && build",
    "postinstall": "install-app-deps",
    "preinstall": "npm install -g foreman"
  },

Я хочу полностью закрыть ReactApp после / до вызова app.quit () Electron. Вот код, который я использую для закрытия приложения.

ipcMain.on('closeApp', (evt, arg) => {
    app.exit(0)
});

1 Ответ

0 голосов
/ 19 сентября 2019

Вы видите, что 0.0.0.0:3000 все еще слушает, потому что вы не закрыли соединение должным образом.Перед тем как выйти из приложения, вам необходимо закрыть сервер реагирующих приложений.Существует событие с именем before-quit в электронном app, которое запускается непосредственно перед закрытием приложения.Вы можете использовать обратный вызов, чтобы закрыть сервер.Для поиска pid, подключенного к порту 3000, существует пакет find-process , после нахождения pid завершите процесс.Рассмотрим приведенный пример.

const find = require('find-process');

app.on('before-quit' , (e) => {
    find('port', 3000)
      .then(function (list) {
      if(list[0] != null){
          process.kill(list[0].pid, 'SIGHUP');
      }
    }.catch((e) => {
        console.log(e.stack || e);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...