【问题标题】:Node.js to get/determine OS versionNode.js 获取/确定操作系统版本
【发布时间】:2013-02-20 20:15:49
【问题描述】:

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

sw_vers -productVersion

有没有办法在没有node-exec-sync 的情况下同步执行此操作(类似于 process.arch)?我意识到同步生成/执行是一种公认​​的坏习惯,但我没有看到其他方法。

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    你可以像这样使用the OS module:

    var os = require('os');
    os.platform(); // 'darwin'
    os.release(); //'10.8.0'
    

    然后将发布版本映射到特定版本的 Mac OS X。

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

    【讨论】:

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

    如上所述,在 AndyD 的答案 cmets 中,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));
    

    https://github.com/kevinsawicki/node-plist

    【讨论】:

      猜你喜欢
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2011-03-27
      • 2019-01-19
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多