اذهب إلى المحتوى

السؤال

نشر

لدي بعض الشيفرات البرمجية التي سيتم تنفيذها بطرق مختلفة تبعاً لنظام التشغيل.  ففي حال كان نظام التشغيل ويندوز أرغب بتنفيذ عمليات معيّنة وهكذا بالنسبة لبقية الأنظمة.

هل يوجد طريقة أستطيع من خلالها معرفة أو اختبار شرط نظام التشغيل الذي يعمل عليه node.js ضمن المشروع؟ 

Recommended Posts

  • 2
نشر

يمكن معرفة نظام التشغيل الحالي عن طريق اختبار قيمة المتحول

process.platform

فهو يأخذ القيم التالية

  • win32: في حال كان النظام Windows
  • darwin: في حال كان النظام MacOS
  • linux: في حال كان النظام Linux

مثال لتنفيذ عملية ما فقط على نظام التشغيل ويندوز

if(process.platform === "win32"){

	// أوامر تنفذ فقط على نظام ويندوز

}

 

  • 1
نشر

هناك طرق أخرى لمعرفة نوع النظام وبالتحديد هل هو ووندوز أم لاء, وذلك باستخدام فحص هل النظام يمتلك المجلد ProgramFiles(x86)

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

وايضا يمكنك فعل ذلك من خلال بناء دالة تفحص على النظام ليدك وونودوز 64 بت أم لا, 

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

وبناء على النتيجة الحاصة بالاكواد تستطيع كتابة الاكواد التي تريدها في كل نظام

  • 0
نشر (معدل)

ألكود التالي هو كل ماتحتاج إليه وذلك من أجل كل الأنظمة :

const process = require('process');
//platform من خلال الواصفة 
var platform = process.platform;
switch(platform) {
	case 'aix':
  	// هنا تقوم بماتريد
		console.log("IBM AIX platform");
		break;
	case 'darwin':
  	// هنا تقوم بماتريد
		console.log("Darwin platform(MacOS, IOS etc)");
		break;
	case 'freebsd':
  	// هنا تقوم بماتريد
		console.log("FreeBSD Platform");
		break;
	case 'linux':
  	// هنا تقوم بماتريد
		console.log("Linux Platform");
		break;
	case 'openbsd':
  	// هنا تقوم بماتريد
		console.log("OpenBSD platform");
		break;
	case 'sunos':
  	// هنا تقوم بماتريد
		console.log("SunOS platform");
		break;
	case 'win32':
  	// هنا تقوم بماتريد
		console.log("windows platform");
		break;
	default:
		const os = require('os');
    var type = os.type();
    switch(type) {
         //Windows_NT حالة النظام كان
           case 'Windows_NT':
	    	// هنا تقوم بماتريد
	    	console.log("windows operating system");
	    	break;	
}

 

تم التعديل في بواسطة Ali Haidar Ahmad

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...