同时在本地运行同一 Electron 应用程序的两个实例

问题描述 投票:0回答:2

我正在使用 Electron 开发一个聊天应用程序,并且希望运行同一 Electron 应用程序的两个实例以同时运行以进行调试。

我使用 Electron Forge 实例化该项目,该项目默认使用端口 3000,尝试在另一个进程中运行相同的应用程序会导致地址已在使用错误。

对此进行了一些研究,并了解了在不同端口上运行 客户端和应用程序代码的方法,以及如何更改 Electron Forge 上的默认端口

我考虑过让 Electron 应用程序在随机生成的端口号上运行,以避免占用相同的端口号,但很好奇是否有更简单的方法来做到这一点。

下面附有错误消息:

An unhandled exception has occurred inside Forge:
listen EADDRINUSE: address already in use :::3000
Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (node:net:1334:16)
    at listenInCluster (node:net:1382:12)
    at Server.listen (node:net:1469:7)
    at /Users/userabc/src/p2p-tool/src/app/node_modules/webpack-dev-server/lib/Server.js:771:30
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at /Users/userabc/src/p2p-tool/src/app/node_modules/@electron-forge/plugin-webpack/src/WebpackPlugin.ts:307:22

谢谢!

javascript electron electron-forge
2个回答
0
投票

这是一个基本的解决方法。 这是假设使用 Webpack 捆绑器与 Electron Forge。 Electron Forge 默认在端口 3000 上实例化一个开发服务器,因此我们需要修改端口号以便能够同时运行多个应用程序。

  1. 使用 npm start 启动 Electron 应用程序的第一个实例
  2. 在 package.json 中,在 @ Electron-forge/plugin-webpack 中添加端口和 loggerPort 属性以设置自定义端口和/或 loggerport。示例如下所示。 这篇帖子更详细地解释了为什么它有效
    "config": {
        "forge": {
          "packagerConfig": {
            "name": "Electron starter",
            "executableName": "electron-starter",
            "icon": "assets/icon",
            "extraResource": [
              "assets"
            ]
          },
          "plugins": [
            [
              "@electron-forge/plugin-webpack",
              {
                  //Your code goes here to specify a new port and loggerPort
                  "port": "3001",
                  "loggerPort": "9001",
              
                "mainConfig": "./webpack/main.webpack.js",

                //More config options...

  1. 在终端的新进程中,使用 npm start 启动 Electron 应用程序的第二个实例。 这将在您指定的自定义端口上运行,而第一个实例仍在端口 3000 上运行。

这对于重复使用来说很不方便,所以我欢迎更好的解决方案。


0
投票

是的,您不需要使用多个端口,而是可以使用相同的端口。聊天应用程序没有必要使用多个端口

© www.soinside.com 2019 - 2024. All rights reserved.