2011-12-30 29 views
147

Tôi đang viết một vài tập lệnh trình bao nút để sử dụng khi phát triển trên nền tảng. Chúng tôi có cả nhà phát triển Mac và Windows. Có một biến tôi có thể kiểm tra trong Node để chạy một tập tin .sh trong một trường hợp và .bat trong một khác?Làm cách nào để xác định hệ điều hành hiện tại với Node.js

+0

Giống như kết hợp mô-đun _Quá trình nhỏ _ với mô-đun _OS_? –

+0

Điều này có vẻ giống như một bản sao của http://stackoverflow.com/questions/6551006/get-my-os-from-the-node-js-shell –

+0

http://stackoverflow.com/questions/42524606/get-windows -name-using-node-js – 981

Trả lời

276

Biến sử dụng sẽ process.platform

Trên Mac lợi nhuận biến darwin. Trên Windows, nó trả về win32 (thậm chí trên 64 bit).

Giá trị có thể là: 'darwin', 'freebsd', 'Linux', 'SunOS' hoặc 'win32'

Tôi chỉ cần thiết lập này ở đầu jakeFile tôi:

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

Bạn nên sử dụng mô-đun OS tốt hơn, thậm chí trong tài liệu . os.platform cụ thể – alessioalex

+65

windows trả về ''win32'', ngay cả trên hệ điều hành 64 bit. tức là 'process.platform === 'win32'' là đủ – Raynos

+1

. Cảm ơn Raynos! –

38

Bạn đang tìm kiếm các mô-đun hệ điều hành bản địa cho Node.js:

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

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

os.platform()

Trả về điều hành nền tảng hệ thống. Các giá trị có thể là 'darwin', 'freebsd', 'linux', 'sunos' hoặc 'win32'. Trả về giá trị của process.platform.

+8

var isWin = (os.platform() === 'win32'); – urish

+3

process.platform cũng hoạt động, không cần yêu cầu: https://nodejs.org/dist/latest-v4.x/docs/api/process.html#process_process_platform –

4

khi bạn đang sử dụng 32bits nút trên 64bits cửa sổ (như nút-webkit hoặc nguyên tử vỏ nhà phát triển), process.platform sẽ echo win32

sử dụng

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

(kiểm tra here để biết chi tiết)

1
var isWin64 = process.env.hasOwnProperty('ProgramFiles(x86)'); 
25

Với Node.js v6 (trở lên) có một os mô-đun chuyên dụng, cung cấp một số phương pháp tiện ích hệ thống liên quan đến điều hành.

Trên máy tính Windows 10 của tôi nó báo cáo như sau:

var os = require('os'); 

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

Bạn có thể đọc nó tài liệu hướng dẫn đầy đủ ở đây: https://nodejs.org/api/os.html

1
const path = require('path'); 

if (path.sep === "\\") { 
console.log("Windows"); 
} else { 
console.log("Not Windows"); 
} 
+4

Trong khi mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về cách thức và/hoặc lý do giải thích vấn đề này sẽ cải thiện giá trị lâu dài của câu trả lời. – Badacadabra

+0

Mặc dù điều đó sẽ làm việc trong hầu hết các trường hợp, tôi muốn sử dụng mô-đun 'os', đó là biểu cảm hơn khi đọc mã. – Stephan

0

trình tốt cho tôi

if (/^win/.test(process.platform)) { 
    // TODO: Windows 
} else { 
    // TODO: Linux, Mac or something else 
} 
Các vấn đề liên quan