2011-12-30 113 views
147

我正在編寫幾個節點shell腳本以供在平臺上開發時使用。我們有Mac和Windows開發人員。是否有一個變量,我可以在Node中檢查以在一個實例中運行.sh文件,在另一個實例中運行.bat?如何使用Node.js確定當前的操作系統

+0

等組合模塊_Child Processes_模塊_OS_? – 2011-12-30 20:49:17

+0

這看起來像是一個副本http://stackoverflow.com/questions/6551006/get-my-os-from-the-node-js-shell – 2012-06-22 16:38:19

+0

http://stackoverflow.com/questions/42524606/get-windows -name-using-node-js – 981 2017-03-23 06:05:34

回答

276

使用會process.platform

在Mac變量返回darwin變量。在Windows上,它返回win32(即使在64位上)。

可能的值有: '達爾文', 'FreeBSD的', 'Linux的', '在SunOS' 或

我只是將此設置爲我的jakeFile頂部 '的win32':

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

您應該更好地使用OS模塊,甚至在文檔中。 os.platform特別是 – alessioalex 2011-12-30 20:58:07

+65

即使在64位操作系統上,windows也會返回''win32'。即'process.platform ==='win32''就足夠了 – Raynos 2011-12-30 21:44:02

+1

。感謝Raynos! – 2011-12-30 22:02:36

38

您正在尋找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的值。

+8

var isWin =(os.platform()==='win32'); – urish 2013-10-18 09:51:57

+3

process.platform也可以,不需要:https://nodejs.org/dist/latest-v4.x/docs/api/process.html#process_process_platform – 2016-01-19 03:03:04

4

時您使用的32位節點上的64位的窗口(如節點的webkit或原子 - 殼開發者),將process.platform回聲的win32

使用

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

(檢查here的詳細信息)

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

隨着Node.js的V6(及以上)有專用os模塊,它提供了許多操作系統相關的實用方法。這裏

var os = require('os'); 

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

你可以閱讀它的完整文檔:

在我的Windows 10機器它報告以下https://nodejs.org/api/os.html

1
const path = require('path'); 

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

雖然此代碼可能會回答問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文將提高​​答案的長期價值。 – Badacadabra 2017-06-07 14:01:33

+0

儘管這在大多數情況下都可行,但我更喜歡使用'os'模塊,這在閱讀代碼時更具表現力。 – Stephan 2018-02-03 22:10:58

0

工作正常,我

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