【问题标题】:Run two instances of same Electron app locally at same time同时在本地运行同一个 Electron 应用程序的两个实例
【发布时间】:2022-02-03 05:02:35
【问题描述】:

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

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

对此进行了一些研究,并看到了运行 client & application code on different portshow to change the default port on 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


    【解决方案1】:

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

    1. 使用 npm start 启动 Electron 应用程序的第一个实例
    2. 在 package.json 中,在 @electron-forge/plugin-webpack 中添加端口和 loggerPort 属性以设置自定义端口和/或 loggerport。示例如下所示。这个post goes into more detail on why this works
        "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 上运行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多