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