process
Extensions to process object.
Electron 的 process 对象是 Node.js process 对象 的扩展。它添加了以下事件、属性和方法:
沙箱
在沙箱化的渲染器中,process 对象仅包含部分 API。
crash()hang()getCreationTime()getHeapStatistics()getBlinkMemoryInfo()getProcessMemoryInfo()getSystemMemoryInfo()getSystemVersion()getCPUUsage()uptime()argvexecPathenvpidarchplatformsandboxedcontextIsolatedtypeversionversionsmaswindowsStorecontextId
事件
Event: 'loaded'
当 Electron 加载完其内部初始化脚本并开始加载网页或主脚本时发出。
属性
process.defaultApp 只读
一个 boolean。当应用程序通过作为默认 Electron 可执行文件的参数启动时,此属性在主进程中为 true,否则为 undefined。例如,当使用 electron . 运行应用程序时,即使应用程序已打包(isPackaged 为 true),它也为 true。这对于确定需要从 process.argv 中删除多少个参数很有用。
process.isMainFrame 只读
一个 boolean,当当前渲染器上下文是“主”渲染器帧时为 true。如果你想要当前帧的 ID,应该使用 webFrame.routingId。
process.mas 只读
一个 boolean。对于 Mac App Store 版本,此属性为 true,对于其他版本,则为 undefined。
process.noAsar
一个 boolean,用于控制应用程序内的 ASAR 支持。将其设置为 true 将禁用 Node 内置模块对 asar 文件的支持。
process.noDeprecation
一个 boolean,用于控制是否将弃用警告打印到 stderr。将其设置为 true 将静默弃用警告。此属性用于代替 --no-deprecation 命令行标志。
process.resourcesPath 只读
一个 string,表示资源目录的路径。
process.sandboxed 只读
一个 boolean。当渲染器进程被沙箱化时,此属性为 true,否则为 undefined。
process.contextIsolated 只读
一个 boolean,指示当前渲染器上下文是否启用了 contextIsolation。在主进程中为 undefined。
process.throwDeprecation
一个 boolean,用于控制是否将弃用警告作为异常抛出。将其设置为 true 将为弃用抛出错误。此属性用于代替 --throw-deprecation 命令行标志。
process.traceDeprecation
一个 boolean,用于控制是否将打印到 stderr 的弃用警告包括其堆栈跟踪。将其设置为 true 将为弃用打印堆栈跟踪。此属性用于代替 --trace-deprecation 命令行标志。
process.traceProcessWarnings
一个 boolean,用于控制是否将打印到 stderr 的进程警告包括其堆栈跟踪。将其设置为 true 将为进程警告(包括弃用)打印堆栈跟踪。此属性用于代替 --trace-warnings 命令行标志。
process.type 只读
一个 string,表示当前进程的类型,可以是:
browser- 主进程renderer- 渲染器进程service-worker- 服务工作者中worker- Web Worker 中utility- 作为服务启动的 Node 进程中
process.versions.chrome 只读
一个 string,表示 Chrome 的版本字符串。
process.versions.electron 只读
一个 string,表示 Electron 的版本字符串。
process.windowsStore 只读
一个 boolean。如果应用程序作为 Windows 应用商店应用程序 (appx) 运行,则此属性为 true,否则为 undefined。
process.contextId 只读
一个 string(可选),表示当前 JavaScript 上下文的全局唯一 ID。每个帧都有自己的 JavaScript 上下文。当启用 contextIsolation 时,隔离的世界也有单独的 JavaScript 上下文。此属性仅在渲染器进程中可用。
process.parentPort
如果这是 UtilityProcess,则为一个 Electron.ParentPort 属性(否则为 null),允许与父进程通信。
方法
process 对象具有以下方法:
process.crash()
导致当前进程的主线程崩溃。
process.getCreationTime()
返回 number | null - 自纪元以来的毫秒数,如果信息不可用则返回 null。
指示应用程序的创建时间。时间表示自纪元以来的毫秒数。如果无法获取进程创建时间,则返回 null。
process.getCPUUsage()
返回 CPUUsage。
process.getHeapStatistics()
返回 Object
totalHeapSizeIntegertotalHeapSizeExecutableIntegertotalPhysicalSizeIntegertotalAvailableSizeIntegerusedHeapSizeIntegerheapSizeLimitIntegermallocedMemoryIntegerpeakMallocedMemoryIntegerdoesZapGarbageboolean
返回一个包含 V8 堆统计信息的对象。请注意,所有统计信息都以千字节为单位报告。
process.getBlinkMemoryInfo()
返回 Object
allocatedInteger - 所有已分配对象的千字节大小。totalInteger - 总已分配空间的千字节大小。
返回一个包含 Blink 内存信息对象。这对于调试与渲染/DOM 相关的内存问题可能很有用。请注意,所有值均以千字节为单位报告。
process.getProcessMemoryInfo()
返回 Promise<ProcessMemoryInfo> - 解析为一个 ProcessMemoryInfo。
返回一个对象,提供当前进程的内存使用统计信息。请注意,所有统计信息都以千字节为单位报告。此 API 应在 app ready 之后调用。
Chromium 不为 macOS 提供 residentSet 值。这是因为 macOS 会对最近未使用的页面执行内存压缩。因此,驻留集大小值与预期不符。private 内存更能代表 macOS 上进程的实际预压缩内存使用情况。
process.getSystemMemoryInfo()
返回 Object
totalInteger - 系统可用的总物理内存(以千字节为单位)。freeInteger - 未被应用程序或磁盘缓存使用的内存总量。fileBackedInteger macOS - 当前已分页到存储的内存量。包括文件缓存、网络缓冲区和其他系统服务的内存。purgeableInteger macOS - 被标记为“可清除”的内存量。如果内存压力增加,系统可以将其回收。swapTotalInteger Windows Linux - 系统可用的总交换内存(以千字节为单位)。swapFreeInteger Windows Linux - 系统可用的总交换内存(以千字节为单位)。
返回一个对象,提供整个系统的内存使用统计信息。请注意,所有统计信息都以千字节为单位报告。
process.getSystemVersion()
返回 string - 主操作系统的版本。
示例
const version = process.getSystemVersion()
console.log(version)
// On macOS -> '10.13.6'
// On Windows -> '10.0.17763'
// On Linux -> '4.15.0-45-generic'
它返回实际的操作系统版本,而不是 macOS 上的内核版本,这与 os.release() 不同。
process.takeHeapSnapshot(filePath)
filePathstring - 输出文件的路径。
返回 boolean - 指示快照是否已成功创建。
拍摄 V8 堆快照并将其保存到 filePath。
process.hang()
导致当前进程的主线程挂起。
process.setFdLimit(maxDescriptors) macOS Linux
maxDescriptorsInteger
将当前进程的文件描述符软限制设置为 maxDescriptors 或操作系统硬限制中的较低者。