我正在使用 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
谢谢!
这是一个基本的解决方法。 这是假设使用 Webpack 捆绑器与 Electron Forge。 Electron Forge 默认在端口 3000 上实例化一个开发服务器,因此我们需要修改端口号以便能够同时运行多个应用程序。
"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...
这对于重复使用来说很不方便,所以我欢迎更好的解决方案。
是的,您不需要使用多个端口,而是可以使用相同的端口。聊天应用程序没有必要使用多个端口