358 votes

Comment déterminer le système d'exploitation actuel avec Node.js ?

Je suis en train d'écrire un couple de scripts shell node à utiliser lors du développement sur une plateforme. Nous avons à la fois des développeurs Mac et Windows. Y a-t-il une variable que je peux vérifier dans Node pour exécuter un fichier .sh dans une instance et .bat dans une autre ?

0 votes

Comme le module de combinaison Processus de l'enfant avec module OS ?

0 votes

Cela ressemble à un doublon de stackoverflow.com/questions/6551006/

0 votes

658voto

Mauvis Ledford Points 12424

La variable à utiliser serait process.platform

Sur Mac, la variable est définie comme suit darwin . Sous Windows, il est réglé sur win32 (même sur 64 bits).

Valeurs actuelles possibles sont :

  • aix
  • darwin
  • freebsd
  • linux
  • openbsd
  • sunos
  • win32
  • android (Expérimental, selon le lien)

Je viens de placer ceci en haut de mon jakeFile :

var isWin = process.platform === "win32";

6 votes

Vous devriez mieux utiliser le module OS, c'est même dans la documentation. os.platform spécifiquement

111 votes

Les retours de Windows 'win32' même sur les systèmes d'exploitation à 64 bits. process.platform === 'win32' est suffisant

24 votes

J'ai vérifié os.platform et process.platform et ils sont exactement les mêmes sur Windows et Mac. Je vais utiliser process.platform car il n'est pas nécessaire d'inclure une librairie.

77voto

Benny Neugebauer Points 5393

Avec Node.js v6 (et plus), il y a un module dédié à l'utilisation de l'interface. os qui fournit un certain nombre de méthodes utilitaires liées au système d'exploitation.

Sur mon ordinateur Windows 10, le rapport est le suivant :

var os = require('os');

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

Vous pouvez lire la documentation complète ici : https://nodejs.org/api/os.html#os_os_type

52voto

alessioalex Points 27001

Vous recherchez le module natif OS pour Node.js :

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

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

os.platform()

Renvoie la plate-forme du système d'exploitation. Les valeurs possibles sont 'darwin', 'freebsd', 'linux', 'sunos' ou 'win32'. Renvoie la valeur de process.platform.

9 votes

Var isWin = (os.platform() === 'win32') ;

6 votes

Process.platform fonctionne aussi, sans require : nodejs.org/dist/latest-v4.x/docs/api/

0 votes

Encore une fois, ajoutez openbsd à la liste

24voto

Jaidee Points 33

Processus

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.

OS

const os = require("os"); // Comes with node.js
console.log(os.type());

7voto

Cela fonctionne bien pour moi

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")
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X