千家信息网

如何利用node获取mac系统版本

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何利用node获取mac系统版本"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何利用node获取mac系统版本"文章能帮助大家解决问题。
千家信息网最后更新 2026年11月01日如何利用node获取mac系统版本

这篇文章主要介绍"如何利用node获取mac系统版本"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何利用node获取mac系统版本"文章能帮助大家解决问题。

获取系统类型

既然需要针对 mac 系统进行兼容性处理,首先需要区分系统类型,好在 nodejs 提供了相关的 API,只需使用 os.platform() 即可直接获取系统类型。

import { platform } from 'os';console.log(platform()); // 'darwin'

值得一提的是,macOS 对应的名称不是 macOS 而是 darwin。

除了可以通过 os 这个包获取系统类型,我们还可以通过 process.platform 来获取。

import { platform } from 'process';console.log(platform); // 'darwin'

获取系统版本

很多熟悉 node 的同学这时候会说了,可以通过 os.release() 快速获取系统版本。但是,当你执行 os.release() ,你会发现,它的结果并符合常规认知。

比如,我的系统版本是 12.0.1,但是,os.release() 的执行结果却是 21.1.0。

查看 node 官方文档可以发现,node 是通过 uname(3) 来确定操作系统的,所以执行结果比较违背常规认知。

通过命令行获取系统版本

既然 os.release() 获取的系统版本很难让人理解,那么有没有什么方案可以直接获取实际的系统版本号呢?

mac 上存在 sw_vers 命令,可以直接获取系统信息。

$ sw_versProductName:    macOSProductVersion: 12.0.1BuildVersion:   21A559

可以看到 sw_vers 命令直接获取到了系统版本:12.0.1 。

如果不需要其他系统信息,我们可以通过添加命令行参数,过滤命令行结果,直接获取系统版本。

$ sw_vers -ProductVersion12.0.1

由于命令行不区分大小写,所以命令行参数无所谓大小写,你也可以写成 -productversion 或者 -ProductVersion。

既然知道命令行怎么写,接下来我们只需要在 node 中调用命令行即可。

import { execSync } from 'child_process';console.log(execSync('sw_vers -ProductVersion', { encoding: 'utf-8' })); // 12.0.1

优雅地获取系统版本

通过 node 子进程执行命令行命令,可以获取正确的系统版本。但是这种方式有着性能方面的缺陷,需要创建子进程执行命令行,相对于 os.release() 的方式,开销较大。

之前使用 os.release() 的问题在于返回结果比较违反常规认知,但是它的结果其实是正确的,只不过需要进行一次映射。

所以,通过 os.release() 配合映射表即可优雅地获取系统版本。

import os from 'os';const macVersionMap = new Map([  [21, ['Monterey', '12']],  [20, ['Big Sur', '11']],  [19, ['Catalina', '10.15']],  [18, ['Mojave', '10.14']],  [17, ['High Sierra', '10.13']],  [16, ['Sierra', '10.12']],  [15, ['El Capitan', '10.11']],  [14, ['Yosemite', '10.10']],  [13, ['Mavericks', '10.9']],  [12, ['Mountain Lion', '10.8']],  [11, ['Lion', '10.7']],  [10, ['Snow Leopard', '10.6']],  [9, ['Leopard', '10.5']],  [8, ['Tiger', '10.4']],  [7, ['Panther', '10.3']],  [6, ['Jaguar', '10.2']],  [5, ['Puma', '10.1']],]);const getMacRelease = (release: string) => {  const macRelease = release ?? os.release();  const firstReleaseVersion = Number(macRelease.split('.')[0]);  const [name, version] = macVersionMap.get(firstReleaseVersion) || [    'Unknown',    '',  ];  return {    name,    version,  };};console.log(getMacRelease()) // 12

为了方便 mac 新发布系统后依然能够识别,将新系统版本名称识别为 Unknow,新版本识别为空字符串。

此举是学习移动端机型打分平台,如果出现版本为空时,默认为高版本,不影响低版本的兼容性处理。

关于"如何利用node获取mac系统版本"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

系统 版本 命令 结果 可以通过 类型 常规 知识 认知 优雅 信息 兼容性 参数 名称 大小 实际 方式 行业 进程 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 科技互联网产品 互联网科技有限公司经营范围 互联网科技垄断 深圳互联网科技公司 北京禾田雨橡互联网科技 有木互联网科技 中国互联网金融科技基金 中正互联网科技招聘 新华互联网科技2019 中国的互联网科技企业的崛起 互联网科技中介 互联网科技扶贫时间 本届互联网博览会上的黑科技 乌鲁木齐新华智原互联网科技学校 徐州市互联网科技有限公司 群盈汇互联网科技有限公司 产业互联网科技服务公司 互联网科技资金流入 银川新华互联网科技学校是国营吗 互联网新科技 科技金融是不是互联网金融 互联网是不是新科技 广州紫鲸互联网科技 互联网还是高科技吗 济南有互联网科技公司吗 黑云互联网科技有限公司 互联网科技包装股份有限公司上市 互联网高科技行业有哪些企业 山东蛋芒互联网科技有限公司
0