Javascript Node.js获取/确定操作系统版本

Javascript Node.js获取/确定操作系统版本,javascript,node.js,Javascript,Node.js,我想确定正在执行的某些脚本是否正在运行特定版本的MacOSX。我意识到我可以执行/生成命令: sw_vers -productVersion 有没有一种方法可以同步地(类似于process.arch)完成这项工作而不必担心?我意识到同步生成/exec是一种公认的错误做法,但我看不到其他方法。您可以这样使用: var os = require('os'); os.platform(); // 'darwin' os.release(); //'10.8.0' 然后将发布版本映射到Mac OS

我想确定正在执行的某些脚本是否正在运行特定版本的MacOSX。我意识到我可以执行/生成命令:

sw_vers -productVersion
有没有一种方法可以同步地(类似于process.arch)完成这项工作而不必担心?我意识到同步生成/exec是一种公认的错误做法,但我看不到其他方法。

您可以这样使用:

var os = require('os');
os.platform(); // 'darwin'
os.release(); //'10.8.0'
然后将发布版本映射到Mac OS X的特定版本


Darwin到Mac OS X的映射可以找到

,正如上面AndyD的回答中提到的,
OS.release()
返回内核版本。如果要获得用户在“关于此Mac”UI中看到的相同版本号,可以读取并解析
/System/Library/CoreServices/SystemVersion.plist
,如下所示:

const plist = require('plist');
let versionInfo = plist.parseFileSync('/System/Library/CoreServices/SystemVersion.plist');
console.log(JSON.stringify(versionInfo));

os.release应该与提供内核版本的
uname-a
相同。例如,在OSX 10.8.2上,它返回12.2.0。我想我可以找到到OSX版本的内核映射,但我认为这不太可靠。好吧,一旦你得到
os.platform()
值,你就可以运行代码,从其他特定于平台的命令中获取实际的os版本。添加了发布历史的链接。根据文章,映射比我想象的更可靠。主版本保持唯一,而次版本实际上与OSX版本中的次版本相对应。谢谢os.release返回20.3版本,显然不返回操作系统版本。