os.platform() возвращает darwin вместо OSX

os.platform();

Приведенная выше инструкция JS возвращает имя ОС.

  • Когда он запускается в Ubuntu, он возвращается

    'linux'
    
  • Когда он запускается на Macbook, он возвращается

    'darwin'
    

Мне интересно, почему не возвращается osx,unix или же bsd..?

Есть ли darwinтакое форк osx?

Как получить тип ОС под MAC с помощью Node.js?

3 ответа

Решение

Дарвин - это не OSX, а OSX - это Дарвин.

Дарвин - это ядро ​​OSX, точно так же, Linux - это ядро ​​Debian, Ubuntu и всех других дистрибутивов Linux.

Поскольку проект с открытым исходным кодом мертв, вы можете смело предположить, что платформой, идентифицируемой как Darwin, является macOS (включая OSX), iOS, watchOS или tvOS, для Mac, iPhone, Apple Watch и Apple TV.

Пока вы не можете сделать ярлык darwin => OSX вслепую, я не знаю ни одного порта node.js для других устройств, так что да, если вы получаете darwin, вы можете быть почти уверены, что это устройство macOS, но это может быть другая версия, чем OSX.

Дарвин является базовой платформой для OS X.

Чтобы получить версию OS X вместо этого, вы можете сделать это через командную строку (или дочерний процесс) с помощью: defaults read loginwindow SystemVersionStampAsString или же sw_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.

Дарвин был оригинальным именем, данным OS X Apple. Он был назван таковым, потому что это был шаг NeXT в эволюции операционных систем.

Другие вопросы по тегам