电子应用程序在导出为 Snap 时无法获取 ipaddress

问题描述

我正在尝试为我的小应用程序“OpenSpeedTest-Server”做一个快照,这是一个简单的网络性能评估工具。 它在 Windows、Mac 和 Linux (DEB) 上运行良好。当我在 Snap 中导出相同的内容时,应用程序无法获取客户端设备的 IP 地址。

我尝试了“禁闭”:“经典”,并插入网络观察等,但没有任何效果

我手动添加了“@davidwinter/electron-forge-maker-snap”DevDependency 并将其导出为实际工作的 snap。

唯一的问题是应用程序无法获取设备 IP 地址。

enter image description here

我的 Electron Forge package.json

{
  "name": "OpenSpeedTest-Server","productName": "OpenSpeedTest-Server","version": "2.1.0","description": "Network Speed Test Server - by OpenSpeedTest","main": "src/index.js","scripts": {
    "start": "electron-forge start","package": "electron-forge package","make": "electron-forge make","publish": "electron-forge publish","lint": "echo \"No linting configured\""
  },"keywords": [],"author": {
    "name": "OpenSpeedTest","email": "support@openspeedtest.com"
  },"license": "MIT","config": {
    "confinement": "devmode","forge": {
      "packagerConfig": {
        "icon": "src/icon.png"
      },"makers": [
        {
          "name": "@davidwinter/electron-forge-maker-snap","config": {
            "name": "OpenSpeedTest_Server","categories": [
              "Utility"
            ]
          }
        },{
          "name": "@electron-forge/maker-zip","platforms": [
            "darwin"
          ]
        },{
          "name": "@electron-forge/maker-deb","config": {}
        },{
          "name": "@electron-forge/maker-rpm","config": {}
        }
      ]
    }
  },"dependencies": {
    "@davidwinter/electron-forge-maker-snap": "^2.0.4","cors": "^2.8.5","electron-squirrel-startup": "^1.0.0","express": "^4.17.1","internal-ip": "^6.2.0","tcp-port-used": "^1.0.2"
  },"devDependencies": {
    "@electron-forge/cli": "^6.0.0-beta.57","@electron-forge/maker-deb": "^6.0.0-beta.57","@electron-forge/maker-rpm": "^6.0.0-beta.57","@electron-forge/maker-squirrel": "^6.0.0-beta.57","@electron-forge/maker-zip": "^6.0.0-beta.57","electron": "13.1.2"
  }
}

解决方法

{
“name”: “@davidwinter/electron-forge-maker-snap”,“config”: {
“name”: “OpenSpeedTest_Server”,“categories”: [
“Utility”
],“stagePackages”: [
“default”,“iproute2”
]
}
},

我的开发部

},"dependencies": {
"cors": "^2.8.5","electron-squirrel-startup": "^1.0.0","express": "^4.17.1","internal-ip": "^6.2.0","tcp-port-used": "^1.0.2"
},

内部IP负责获取ip地址。

https://www.npmjs.com/package/internal-ip 该模块返回由默认网关确定的面向 Internet 的接口的地址。当由于某种原因无法确定地址时,将返回 undefined。 该模块依赖于操作系统工具。在 Linux 和 Android 上,ip 命令必须可用,默认情况下可能不会安装取决于发行版。它通常由 iproute2 包提供。 .v4.sync() 和 .v6.sync() 在浏览器中不受支持,只返回 undefined。

所以我们需要在 stagePackages 中添加 iproute2 以使其在 snap 上工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...