Cómo determino el sistema operativo actual con Node.js


Estoy escribiendo un par de scripts de shell de nodos para su uso cuando se desarrolla en una plataforma. Tenemos desarrolladores de Mac y Windows. ¿Hay una variable que puedo comprobar en el nodo para ejecutar un archivo. sh en una instancia y .bate en otro?

 171
Author: abbotto, 2011-12-31

8 answers

La variable a utilizar sería process.platform

En Mac la variable devuelve darwin. En Windows, devuelve win32 (incluso en 64 bits).

Los valores Posibles son: 'darwin', 'freebsd', 'linux', 'sunos' o 'win32'

Acabo de establecer esto en la parte superior de mi jakeFile:

var isWin = process.platform === "win32";
 327
Author: Mauvis Ledford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-04 02:38:21

Está buscando el módulo nativo del sistema operativo para Node.js:

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

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

Os.platform ()

Devuelve la plataforma del sistema operativo. Los valores posibles son 'darwin', 'freebsd', 'linux', 'sunos' o 'win32". Devuelve el valor de process.plataforma.

 41
Author: alessioalex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-24 09:33:02

Con Nodo.js v6 (y superior) hay un módulo dedicado os, que proporciona una serie de métodos de utilidad relacionados con el sistema operativo.

En mi máquina Windows 10 informa lo siguiente:

var os = require('os');

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

Usted puede leer la documentación completa aquí: https://nodejs.org/api/os.html

 30
Author: Benny Neugebauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-30 13:47:31

Cuando esté usando el nodo 32bits en windows 64bits(como los desarrolladores de node-webkit o atom-shell), procese.la plataforma se hará eco de win32

Use

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

(marque aquí para más detalles)

 4
Author: user2404131,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-24 08:32:39

Esto funciona bien para mí

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")
}
 3
Author: Adeojo Emmanuel IMM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-08 13:59:41
const path = require('path');

if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
 2
Author: Alexander Koleda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-09 10:50:07
var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');
 1
Author: Ziyu Zhou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 10:42:21

Funciona bien para mí

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

El modificador i se utiliza para realizar coincidencias que no distinguen entre mayúsculas y minúsculas.

 1
Author: V. Kalyuzhnyu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-25 15:42:06