在鸿蒙 PC 上采用 Electron 获取本机 IP 地址

在这里插入图片描述

在这里插入图片描述

前言

随着华为鸿蒙(HarmonyOS)生态的不断扩展,鸿蒙 PC 版本也逐渐走入开发者视野。虽然鸿蒙系统原生支持基于 ArkTS/ArkUI 的应用开发,但许多开发者仍希望利用熟悉的 Web 技术栈快速构建桌面应用。Electron 作为一个成熟的跨平台桌面应用框架,是否能在鸿蒙 PC 上运行?答案是:可以! 而本文将带你实战一个常见需求——在鸿蒙 PC 的 Electron 应用中获取本机 IP 地址


一、为什么选择 Electron?

Electron 允许我们使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用,其背后依赖 Chromium 和 Node.js。尽管鸿蒙 PC 的底层架构与传统 Linux 或 Windows 不同,但只要系统兼容 POSIX 接口并支持 Node.js 运行环境,Electron 应用就有可能运行。

目前,鸿蒙 PC 已支持部分开源生态工具链,包括 Node.js。因此,在鸿蒙 PC 上部署轻量级 Electron 应用已成为可能。


二、项目目标

实现一个简单的 Electron 桌面应用,在主窗口中显示本机所有网络接口的 IPv4 地址。


三、开发环境准备

如果环境有问题的可以看下这篇文章:Electron for HarmonyOS 开发环境搭建

  1. 鸿蒙 PC 开发者模式已开启

  2. 安装 Node.js(建议 v18+)

  3. 安装 npm / yarn

在这里插入图片描述

  1. 初始化项目:

    mkdir electron-harmony-ip
    cd electron-harmony-ip
    npm init -y
  2. 安装 Electron:

    npm install electron --save-dev

这里可以直接复制我的json文件
在这里插入图片描述

四、核心代码实现

1. 主进程(main.js)

// main.js
const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const win = new BrowserWindow({
width: 600,
height: 400,
webPreferences: {
nodeIntegration: true,
contextIsolation: false, // 注意:生产环境应启用 contextIsolation
}
});
win.loadFile('index.html');
}
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit();
});

2. 渲染页面(index.html)

<!-- index.html -->
  <!DOCTYPE html>
    <html>
      <head>
          <meta charset="UTF-8">
        <title>鸿蒙 PC - IP 地址查看器</title>
        </head>
        <body>
        <h2>本机 IP 地址列表</h2>
        <ul id="ipList"></ul>
        <script src="renderer.js"></script>
        </body>
      </html>

3. 渲染进程逻辑(renderer.js)

// renderer.js
const os = require('os');
function getLocalIPs() {
const interfaces = os.networkInterfaces();
const ipList = [];
for (const name of Object.keys(interfaces)) {
for (const iface of interfaces[name]) {
// 只获取 IPv4 且非内部回环地址
if (iface.family === 'IPv4' && !iface.internal) {
ipList.push(iface.address);
}
}
}
return ipList;
}
function displayIPs() {
const ips = getLocalIPs();
const list = document.getElementById('ipList');
if (ips.length === 0) {
list.innerHTML = '<li>未检测到有效 IP 地址</li>';
} else {
list.innerHTML = ips.map(ip => `<li>${ip}</li>`).join('');
}
}
displayIPs();

五、启动应用

在项目根目录下添加 package.json 的启动脚本:

{
"scripts": {
"start": "electron ."
}
}

package.json

{
"name": "my-electron-app",
"version": "1.0.0",
"description": "This is my electron app",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"keywords": [],
"author": "VON",
"license": "ISC",
"type": "commonjs"
}

然后运行:

npm start

如果一切顺利,你将在鸿蒙 PC 上看到一个窗口,列出本机所有有效的 IPv4 地址。

这里由于缺少真机,下篇博客会补充真机运行效果的,希望大家见谅

在这里插入图片描述


六、注意事项

  1. 安全性:示例中关闭了 contextIsolation 以简化 Node.js API 调用。在生产环境中,建议通过预加载脚本(preload)安全地暴露所需功能。
  2. 兼容性:确保鸿蒙 PC 的 Node.js 版本与 Electron 兼容。可参考官方 Electron 支持的 Node.js 版本表。
  3. 权限问题:获取网络信息属于基础系统能力,通常无需额外权限,但在某些安全策略严格的鸿蒙版本中可能受限。

七、结语

虽然鸿蒙原生开发推荐使用 ArkTS,但在过渡期或特定场景下,Electron 仍是一个高效的桌面应用开发选择。本文展示了如何在鸿蒙 PC 上利用 Electron + Node.js 快速实现 IP 地址获取功能,为后续更复杂的网络工具开发打下基础。

未来,随着鸿蒙对开源生态的支持进一步完善,Electron 应用在鸿蒙平台上的体验将更加流畅。期待更多开发者加入鸿蒙生态,共建多元化的应用世界!

如果你喜欢这篇文章,欢迎点赞、转发,或在评论区分享你在鸿蒙 PC 上的开发经验!

posted @ 2026-01-30 20:36  yangykaifa  阅读(4)  评论(0)    收藏  举报