Electron主进程全局上下文即Node.js全局上下文,支持require、fs等Node原生API,但无window/document等Web API,全局变量需显式挂载global,且与渲染进程完全隔离。

Electron 主进程中的全局执行上下文,本质上就是 Node.js 的全局上下文,它不等同于浏览器环境中的 window,也没有 DOM、document 或 location 等 Web API。
运行环境完全基于 Node.js
主进程脚本(如 main.js)在纯 Node.js 环境中启动,可直接使用:
-
require()、module.exports、__dirname、process等 Node.js 原生机制 - 所有内置模块:如
fs、path、os、child_process - 第三方 npm 包(只要兼容 Node.js 运行时)
没有浏览器全局对象
主进程无法访问以下 Web 特有对象,尝试引用会报 ReferenceError:
-
window、document、navigator、localStorage -
XMLHttpRequest、fetch(需用node-fetch或got等 Node 库替代) - CSSOM、Canvas API、WebGL 等渲染相关接口
全局变量需显式挂载
Node.js 默认不提供类似浏览器的隐式全局变量(如 console 除外)。虽然 global 对象存在,但:
- 直接赋值
myVar = 'x'不会自动挂到global(严格模式下甚至报错) - 若需跨模块共享,应通过
global.myAPI = {...}显式挂载,或更推荐使用模块导出/单例管理 - 滥用
global可能引发内存泄漏或状态污染,尤其在长期运行的应用中
与渲染进程完全隔离
主进程的全局上下文和任意渲染进程(含其 preload 脚本)之间无共享内存或作用域链:
- 主进程中的
global对象对渲染进程不可见 - 即使两个进程都 require 同一模块(如
lodash),它们的模块缓存也是独立的 - 通信必须通过
ipcMain/ipcRenderer或contextBridge显式传递数据


















