Jak określić bieżący system operacyjny za pomocą Node.js.


Piszę kilka skryptów powłoki węzła do wykorzystania podczas tworzenia na platformie. Mamy zarówno programistów Mac, jak i programistów Windows. Czy istnieje zmienna, którą mogę sprawdzić w węźle, aby uruchomić plik .sh w jednej instancji i .bat w drugiej?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zmienna do użycia to
process.platform
http://nodejs.org/api/process. ... tform
Na Macu zmienna zwraca
darwin
. W systemie Windows zwraca
win32
(nawet w wersji 64-bitowej).
Aktualne możliwe wartości
https://nodejs.org/api/process ... tform
:
  • aix
  • darwin
  • freebsd
  • linux
  • openbsd
  • sunos
  • win32

Po prostu umieściłem to na górze mojego pliku jakeFile:
var isWin = process.platform === "win32";
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Począwszy od wersji Node.js v6 (i nowszych) istnieje dedykowany moduł
os
, który udostępnia szereg narzędzi związanych z systemem operacyjnym.
Na moim komputerze z systemem Windows 10 zgłasza następujące informacje:
var os = require('os');console.log(os.type());// "Windows_NT"
console.log(os.release());// "10.0.14393"
console.log(os.platform());// "win32"

Możesz przeczytać pełną dokumentację tutaj:

https://nodejs.org/api/os.html#os_os_type
https://nodejs.org/api/os.html#os_os_type
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Szukasz natywnego modułu systemu operacyjnego dla Node.js:
W 4:

https://nodejs.org/dist/latest ... tform
https://nodejs.org/dist/latest ... tform
lub V5:

https://nodejs.org/dist/latest ... tform
https://nodejs.org/dist/latest ... tform
os.platform()
>
Zwraca platformę systemu operacyjnego. Możliwe wartości to „darwin”, „freebsd”, „linux”, „sunos” lub „win32”. Zwraca wartość process.platform.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Proces
>
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());
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

To działa świetnie dla mnie
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")
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Działa świetnie dla mnie
if (/^win/i.test(process.platform)) {
// TODO: Windows
} else {
// TODO: Linux, Mac or something else
}
Modyfikator i służy do dopasowywania bez uwzględniania wielkości liter.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

gdy używasz węzła 32-bitowego w 64-bitowych oknach (np. programistom node-webkit lub atom-shell), proces. platforma wyświetli echo win32
posługiwać się
function isOSWin64() {
return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
}

(patrz szczegóły

tutaj
https://coderwall.com/p/0eds7q
)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

const path = require('path');if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)');
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Napotkałem ten sam problem podczas uruchamiania kodu węzła js na maszynie wirtualnej z systemem Windows na komputerze Mac. Poniższy kod załatwił sprawę.
Zastąpić

process.platform == 'win32'

od

stały OS = require ('os');
os.platform() == 'win32';

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się