os.platform() returns 达尔文而不是 OSX

os.platform() returns darwin instead of OSX

os.platform();

上面的JS指令return是OS的名字。

我想知道为什么 return osx ,unixbsd.. ?

darwin是osx的分支吗?

如何使用Node.js获取MAC下OS的类型?

达尔文不是OSX,OSX是达尔文。

Darwin是OSX的核心,同理,Linux是Debian的核心,Ubuntu,其他的都是Linux分布。

因此,虽然您可以 100% 确定任何 Apple 产品(macOS、OSX、iOS、watchOS、tvOS)都将 return Darwin,但从技术上讲这是不正确的假设 darwin 永远只会是那些操作系统,因为存在一些低调的开源项目,比如 PureDarwin,而那些也将是 return darwin.

但是,除了 OSX 之外,我不知道任何其他基于达尔文的操作系统的 node.js 的任何(官方)端口,所以在实践中,是的,如果你得到 darwin, 你可以确信它是 OSX.

Darwin 是 apple 给 OS X 的原名。之所以这样命名,是因为它是操作系统发展过程中的 NeXT 一步。

Darwin 是 OS X 的基础平台。

要获取 OS X 版本,您可以通过命令行(或子进程)执行此操作:defaults read loginwindow SystemVersionStampAsStringsw_vers -productVersion

要通过 C/C++ 获取版本(您可以编写绑定以从节点访问):

// compile with: g++ osx_ver.cc -I/Developer/Headers/FlatCarbon -framework CoreServices
#include <Gestalt.h>
#include <stdio.h>

int main() {
  SInt32 majorVersion, minorVersion, bugFixVersion;

  Gestalt(gestaltSystemVersionMajor, &majorVersion);
  Gestalt(gestaltSystemVersionMinor, &minorVersion);
  Gestalt(gestaltSystemVersionBugFix, &bugFixVersion);

  printf("%d.%d.%d", majorVersion, minorVersion, bugFixVersion);

  return 0;
}

注意:上面显示的 Gestalt() 用法自 OS X 10.8 起已弃用,但它的替代品似乎在 OS X 10.10 之前不可用,因此您可能需要使用Objective-C 而不是 ([processInfo operatingSystemVersion]) 并在 API 可用性上分支,就像在 Chromium 中所做的那样 here