Electron 集成 Node.js 后端服务的实现与打包配置

作者:星河

时间:2026-10-31

浏览:660

本文介绍在 Electron 应用中直接引入 Node.js 后端服务的实现方法。通过创建 Express 路由并启动 HTTP 服务,Electron 主进程可直接调用接口。重点解决打包后常见的依赖缺失及跨域报错问题,包括配置 webSecurity 和手动处理依赖包的策略。

文章目录

本文不赘述 Electron 的基础配置,核心在于如何在 Electron 主进程中直接引入 Node.js 服务,这一过程相对简单。

首先需要准备一个 Node.js 服务环境。

项目结构中需创建两个核心文件:index.js 用于服务启动,router.js 用于路由定义。

index.js 负责初始化 Express 应用、引入路由模块、设置端口并创建 HTTP 服务器监听请求。

const express = require("express");
const router = express.Router();
// 引入全局对象
var path = require("path");
const indexRouter = require("./router.js");
// 声明创建
let http = require("http");
let port = 3000;
// 建立网站服务器
var app = express();
// 引入路由
app.use(indexRouter);
app.set("port", port);
// 创建 HTTP 服务器并监听 port 端口的所有请求
var server = http.createServer(app);
server.listen(port);
console.log("启动成功:端口" + port);

router.js 定义具体的 API 路由逻辑,例如处理 GET 请求并返回 JSON 数据。

// 1、导入express模块
const express = require("express");
// 2、创建路由对象
const router = express.Router();
// 3、挂载具体的路由
router.get("/test", (req, res) => {
  res.send({
    code: 200,
    data: "访问成功!",
  });
});
// 4、向外导出路由
module.exports = router;

在终端执行 node index.js 命令以启动 Node 服务。

首先需要准备一个 Node.js 服务环境。

服务启动后,通过浏览器访问对应接口即可看到成功返回的数据。

首先需要准备一个 Node.js 服务环境。

接下来在 Electron 的主进程代码中引入上述 Node 服务模块。

首先需要准备一个 Node.js 服务环境。

启动 Electron 应用后,后台 Node 服务将同步运行,实现前后端交互。

首先需要准备一个 Node.js 服务环境。

由于 Electron 默认未内置 jQuery 和 Axios,开发阶段可直接通过浏览器访问接口;若前端使用 Vue 等项目,建议配置代理进行访问。

首先需要准备一个 Node.js 服务环境。

注意:应用打包后直接调用接口可能会遭遇跨域报错,此时需在 Electron 打包配置中设置 webPreferences 对象,并将 webSecurity 属性设为 true 以禁用安全限制。

首先需要准备一个 Node.js 服务环境。

完成上述配置后,进行应用打包运行测试。

常见问题一:打包后出现依赖缺失报错。

打包过程中常遇到缺少依赖的错误,这通常是因为 Electron 打包工具未自动递归打包 Node 模块的嵌套依赖所致。

首先需要准备一个 Node.js 服务环境。

首先需要准备一个 Node.js 服务环境。

一种可行的解决方案是手动将 express 的相关依赖文件复制至项目目录,然后重新执行 cnpm i 安装;或者根据报错提示逐个下载缺失的依赖包。如有更优方案,欢迎交流。

首先需要准备一个 Node.js 服务环境。

"accepts": "~1.3.8",
    "array-flatten": "1.1.1",
    "body-parser": "1.20.1",
    "content-disposition": "0.5.4",
    "content-type": "~1.0.4",
    "cookie": "0.5.0",
    "cookie-signature": "1.0.6",
    "debug": "2.6.9",
    "depd": "2.0.0",
    "encodeurl": "~1.0.2",
    "escape-html": "~1.0.3",
    "etag": "~1.8.1",
    "finalhandler": "1.2.0",
    "fresh": "0.5.2",
    "http-errors": "2.0.0",
    "merge-descriptors": "1.0.1",
    "methods": "~1.1.2",
    "on-finished": "2.4.1",
    "parseurl": "~1.3.3",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~2.0.7",
    "qs": "6.11.0",
    "range-parser": "~1.2.1",
    "safe-buffer": "5.2.1",
    "send": "0.18.0",
    "serve-static": "1.15.0",
    "setprototypeof": "1.2.0",
    "statuses": "2.0.1",
    "type-is": "~1.6.18",
    "utils-merge": "1.0.1",
    "vary": "~1.1.2",
    "ee-first": "1.1.1"

常见问题二:服务关闭与历史包清理。

首先需要准备一个 Node.js 服务环境。

在测试结束后,需手动关闭 Node 服务进程以释放资源。

首先需要准备一个 Node.js 服务环境。

首先需要准备一个 Node.js 服务环境。

至此,关于在 Electron 中引入 Node 服务的完整流程及打包注意事项已介绍完毕,更多相关内容可参考本站其他文章。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章