প্ল্যাটফর্মে বিকাশ করার সময় আমি কয়েকটি নোড শেল স্ক্রিপ্ট ব্যবহার করছি। আমাদের ম্যাক এবং উইন্ডোজ উভয়ই বিকাশকারী রয়েছে। নোডে আমি একটি উদাহরণে .sh ফাইল চালানোর জন্য নোডে এবং অন্যথায় .bat ফাইলটি পরীক্ষা করতে পারি কি কোনও ভেরিয়েবল আছে?
প্ল্যাটফর্মে বিকাশ করার সময় আমি কয়েকটি নোড শেল স্ক্রিপ্ট ব্যবহার করছি। আমাদের ম্যাক এবং উইন্ডোজ উভয়ই বিকাশকারী রয়েছে। নোডে আমি একটি উদাহরণে .sh ফাইল চালানোর জন্য নোডে এবং অন্যথায় .bat ফাইলটি পরীক্ষা করতে পারি কি কোনও ভেরিয়েবল আছে?
উত্তর:
ব্যবহারের পরিবর্তনশীল হবে process.platform
ম্যাকের উপর চলকটি প্রদান করে darwin। উইন্ডোজে এটি ফিরে আসে win32(bit৪ বিট এমনকি)।
aixdarwinfreebsdlinuxopenbsdsunoswin32আমি এটিকে আমার জ্যাকফাইলের শীর্ষে রেখেছি:
var isWin = process.platform === "win32";
'win32', এমনকি 64 বিট অপারেশন সিস্টেমে। অর্থাত্ process.platform === 'win32'যথেষ্ট
process.platform === 'win32'এর তুলনাটি রেজেক্সের চেয়ে আরও সংক্ষিপ্ত এবং সম্ভবত দ্রুততর বলে মনে হচ্ছে। রেজেক্স মাউভিস পোস্ট করেছেন এমনটি আরও ভাল মানের চেক বলে মনে হচ্ছে । যদি নোড / উইন্ডোজ প্রতিটি উইন 6464, উইনআরএম, ইত্যাদি, বা অন্য কোনও কিছু ফেরত দেওয়ার সিদ্ধান্ত নিয়ে থাকে তবে স্ট্রিং তুলনা করে একটি টন কোড ভাঙবে। আমরা যা খুঁজছি তা হ'ল এটি উইন্ডোজ কিনা। খিলান না। আমি স্ট্রিংকে কিছু সময়ের জন্য তুলনা করার পরে এই রেজেজকে ভোট দিই, রেজেক্সটি 'নিরাপদ' মনে করে।
নোড.জেএস ভি With (এবং উপরে) এর সাথে একটি উত্সর্গীকৃত 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
আপনি নোড.জেএস এর জন্য ওএস নেটিভ মডিউলটি সন্ধান করছেন:
v4: https://nodejs.org/dist/latest-v4.x/docs/api/os.html#os_os_platform
বা ভি 5: https://nodejs.org/dist/latest-v5.x/docs/api/os.html#os_os_platform
os.platform ()
অপারেটিং সিস্টেম প্ল্যাটফর্মটি ফেরত দেয়। সম্ভাব্য মানগুলি হ'ল 'ডারউইন', 'ফ্রিবিএসডি', 'লিনাক্স', 'সানোস' বা 'উইন 32'। প্রক্রিয়া.প্ল্যাটফর্মের মান প্রদান করে।
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")
}
আপনি যখন bits৪ বিট উইন্ডোতে 32 নট নোড ব্যবহার করছেন (যেমন নোড-ওয়েবকিট বা অ্যাটম শেল বিকাশকারী), প্রক্রিয়া.প্ল্যাটফর্ম উইন 32 প্রতিধ্বনিত হবে
ব্যবহার
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মডিউলটি ব্যবহার করতে পছন্দ করব যা কোডটি পড়ার সময় আরও অভিব্যক্তিপূর্ণ।
আমি ম্যাক মেশিনে উইন্ডোজ ভিএম এ আমার নোড জেএস কোড চালিয়ে একই সমস্যার মুখোমুখি ছিলাম। নিম্নলিখিত কোডটি কৌশলটি করেছে।
প্রতিস্থাপন করা
প্রক্রিয়া.প্ল্যাটফর্ম == 'win32'
সঙ্গে
কনস্ট ওস = প্রয়োজনীয় ('ওএস');
os.platform () == 'win32';