如何使用Node.js确定当前的操作系统

时间:2011-12-30 20:42:31

标签: node.js

我正在编写几个节点shell脚本,以便在平台上进行开发时使用。我们有Mac和Windows开发人员。我可以在Node中检查一个变量,在一个实例中运行.sh文件而在另一个实例中运行.bat吗?

10 个答案:

答案 0 :(得分:382)

要使用的变量为process.platform

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

可能的值有:'darwin','freebsd','linux','sunos'或'win32'

我只是将它设置在我的jakeFile的顶部:

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

答案 1 :(得分:45)

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

答案 2 :(得分:35)

使用Node.js v6(及更高版本),有一个专用的os模块,它提供了许多与操作系统相关的实用程序方法。

在我的Windows 10计算机上,它会报告以下内容:

var os = require('os');

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

您可以在此处阅读完整文档:https://nodejs.org/api/os.html

答案 3 :(得分:5)

这对我来说很好

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

答案 4 :(得分:4)

当您在64位窗口(如node-webkit或atom-shell开发人员)上使用32位节点时,process.platform将回显win32

使用

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

(查看here了解详情)

答案 5 :(得分:3)

过程

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.

操作系统

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

const path = require('path');

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

答案 8 :(得分:1)

适合我的工作

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

i修饰符用于执行不区分大小写的匹配。

答案 9 :(得分:0)

我在Mac机上的Windows VM上运行我的节点js代码时遇到了同样的问题。以下代码可以解决问题。

替换

process.platform =='win32'

使用

const os = require('os');

os.platform()=='win32';