我正在编写几个节点外壳脚本,供在平台上开发时使用。我们有Mac和Windows开发人员。是否可以在Node中检查变量以在一个实例中运行.sh文件,在另一个实例中运行.bat?
我正在编写几个节点外壳脚本,供在平台上开发时使用。我们有Mac和Windows开发人员。是否可以在Node中检查变量以在一个实例中运行.sh文件,在另一个实例中运行.bat?
Answers:
使用的变量是 process.platform
在Mac上,变量返回darwin
。在Windows上,它返回win32
(甚至在64位上)。
aix
darwin
freebsd
linux
openbsd
sunos
win32
我只是将其设置在我的jakeFile的顶部:
var isWin = process.platform === "win32";
'win32'
,即使在64位操作系统上也是如此。即process.platform === 'win32'
足够
process.platform === 'win32'
似乎比正则表达式更简洁,但显然更快。正则表达式Mauvis发布似乎是更好的质量检查。如果Node / Windows每个都决定返回win64,winARM等,则字符串比较会破坏大量代码。我们所寻找的只是是否使用Windows。不是拱门。在使用字符串比较一段时间后,我此时投票给正则表达式,正则表达式“感觉”更安全。
在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#os_os_type
您正在寻找Node.js的OS本机模块:
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的值。
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());
os.type()
似乎以大写形式返回“ Darwin”。出于安全原因,最好os.type().toLowerCase()
在比较值之前先致电。
这对我来说很好
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")
}
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
os
模块,该模块在阅读代码时更具表现力。
我在Mac机的Windows VM上运行我的节点js代码时遇到相同的问题。下面的代码可以达到目的。
更换
process.platform =='win32'
与
const os = require('os');
os.platform()=='win32';