2011-12-30 107 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 
} 
相关问题