Как определить текущую операционную систему с Node.js - PullRequest
216 голосов
/ 31 декабря 2011

Я пишу пару сценариев оболочки для использования при разработке на платформе.У нас есть разработчики как для Mac, так и для Windows.Есть ли переменная, которую я могу проверить в Node для запуска файла .sh в одном экземпляре и .bat в другом?

Ответы [ 9 ]

393 голосов
/ 31 декабря 2011

Используемая переменная будет process.platform

В Mac переменная возвращает darwin.В Windows он возвращает win32 (даже в 64-битной версии).

Возможные значения: 'darwin', 'freebsd', 'linux', 'sunos' или 'win32'

Я просто установил это в верхней части моего jakeFile:

var isWin = process.platform === "win32";
46 голосов
/ 31 декабря 2011

Вы ищете собственный модуль ОС для Node.js:

v4: https://nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform

или v5: https://nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform

os.platform ()

Возвращает платформу операционной системы.Возможные значения: «darwin», «freebsd», «linux», «sunos» или «win32».Возвращает значение process.platform.

35 голосов
/ 30 ноября 2016

В Node.js v6 (и выше) есть выделенный модуль os, который предоставляет ряд служебных методов, связанных с операционной системой.

На моем компьютере с Windows 10 он сообщает следующее:

var os = require('os');

console.log(os.type()); // "Windows_NT"
console.log(os.release()); // "10.0.14393"
console.log(os.platform()); // "win32"

Вы можете прочитать полную документацию здесь: https://nodejs.org/api/os.html

7 голосов
/ 29 декабря 2018

Процесс

var opsys = process.platform;
if (opsys == "darwin") {
    opsys = "MacOS";
} else if (opsys == "win32" || opsys == "win64") {
    opsys = "Windows";
} else if (opsys == "linux") {
    opsys = "Linux";
}
console.log(opsys) // I don't know what linux is.

ОС

const os = require("os"); // Comes with node.js
console.log(os.type());
5 голосов
/ 04 мая 2018

Это прекрасно работает для меня

var osvar = process.platform;

if (osvar == 'darwin') {
    console.log("you are on a mac os");
}else if(osvar == 'win32'){
    console.log("you are on a windows os")
}else{
    console.log("unknown os")
}
4 голосов
/ 24 июля 2014

когда вы используете 32-битный узел в 64-битных окнах (как разработчики node-webkit или atom-shell), process.platform отобразит win32

use

    function isOSWin64() {
      return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
    }

(отметьте * 1006)* здесь для деталей)

1 голос
/ 06 марта 2018

У меня отлично работает

if (/^win/i.test(process.platform)) {
    // TODO: Windows
} else {
    // TODO: Linux, Mac or something else
}

Модификатор i используется для сопоставления без учета регистра.

1 голос
/ 07 июня 2017
const path = require('path');

if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
0 голосов
/ 23 декабря 2014
var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...