मैं एक मंच पर विकसित करते समय उपयोग के लिए नोड शेल स्क्रिप्ट की एक जोड़ी लिख रहा हूँ। हमारे पास मैक और विंडोज डेवलपर्स दोनों हैं। क्या कोई चर है जिसे मैं नोड में एक .sh फ़ाइल को एक उदाहरण में और .bat को दूसरे में चलाने के लिए जाँच कर सकता हूँ?
मैं एक मंच पर विकसित करते समय उपयोग के लिए नोड शेल स्क्रिप्ट की एक जोड़ी लिख रहा हूँ। हमारे पास मैक और विंडोज डेवलपर्स दोनों हैं। क्या कोई चर है जिसे मैं नोड में एक .sh फ़ाइल को एक उदाहरण में और .bat को दूसरे में चलाने के लिए जाँच कर सकता हूँ?
जवाबों:
उपयोग करने के लिए चर होगा process.platform
मैक पर परिवर्तनशील रिटर्न darwin
। विंडोज पर, यह win32
(यहां तक कि 64 बिट पर) लौटता है ।
aix
darwin
freebsd
linux
openbsd
sunos
win32
मैंने इसे अपने जेकफिल के शीर्ष पर सेट किया है:
var isWin = process.platform === "win32";
'win32'
64 बिट ऑपरेशन सिस्टम पर भी विंडोज़ रिटर्न । यानी process.platform === 'win32'
पर्याप्त है
process.platform === 'win32'
रेगेक्स की तुलना में अधिक संक्षिप्त लगती है, और स्पष्ट रूप से तेज है। रेगेक्स मौविस ने पोस्ट किया है कि यह एक बेहतर गुणवत्ता जांच है। यदि नोड / विंडोज ने win64, winARM इत्यादि को वापस करने का फैसला किया, या कुछ और एक टन कोड स्ट्रिंग तुलना के साथ टूट जाएगा। हम सब देख रहे हैं कि यह विंडोज है या नहीं। मेहराब नहीं। मैं इस समय रेगेक्स के लिए वोट करता हूं, थोड़ी देर के लिए स्ट्रिंग की तुलना करने के बाद रेगेक्स 'सुरक्षित' लगता है।
Node.js v6 (और ऊपर) के साथ एक समर्पित os
मॉड्यूल है, जो कई ऑपरेटिंग सिस्टम से संबंधित उपयोगिता विधियों को प्रदान करता है।
मेरे विंडोज 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 ()
ऑपरेटिंग सिस्टम प्लेटफ़ॉर्म लौटाता है। संभावित मूल्य 'डार्विन', 'फ्रीबस्ड', 'लिनक्स', 'सनोस' या 'विन 32' हैं। 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()
एक अपरकेस के साथ 'डार्विन' को वापस करने के लिए लगता है। सुरक्षा कारणों 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")
}
जब आप 64 बिट विंडोज़ (नोड-वेबकिट या परमाणु-शेल डेवलपर्स की तरह) पर 32 बिट्स नोड का उपयोग कर रहे हैं, तो process.platform win32 को गूंज देगा
उपयोग
function isOSWin64() {
return process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432');
}
( विवरण के लिए यहां देखें)
const path = require('path');
if (path.sep === "\\") {
console.log("Windows");
} else {
console.log("Not Windows");
}
os
मॉड्यूल का उपयोग करना पसंद करूंगा , जो कोड को पढ़ते समय अधिक स्पष्ट है।
मैं मैक मशीन पर Windows VM पर अपना नोड js कोड चलाने के लिए एक ही समस्या का सामना कर रहा था। निम्नलिखित कोड ने चाल चली।
बदलने के
process.platform == 'win32'
साथ में
const os = आवश्यकता ('os');
os.platform () == 'win32';