عبد النور محمد نشر 29 سبتمبر 2021 أرسل تقرير نشر 29 سبتمبر 2021 مع __dirname output: { assetModuleFilename: "images/[hash][ext][query]", path: path.resolve(__dirname, 'dist') }, بدون __dirname output: { assetModuleFilename: "images/[hash][ext][query]", path: path.resolve('dist') }, إذن ما هي الحاجة لاستخدام __dirname هنا ؟؟ 2 اقتباس
0 Salah Eddin Beriani2 نشر 30 سبتمبر 2021 أرسل تقرير نشر 30 سبتمبر 2021 في العادة __dirname تقوم بارجاع رابط المجلد لل module دعنا نلقي نظرة على بعض الأكواد التي تستخدم __dirname. //getDirName.js function getDirName() { return __dirname; } module.exports = getDirName; //app.js const getDirName = require('./getDirName'); console.log(getDirName()); هذا ما يبدو عليه الإخراج بدون استخدام webpack /users/usename/folder.../webapckproject لكن عند استخدام webapck //getDirName.js function getDirName() { return __dirname; } export default getDirName; //app.js import getDirName from './getDirName'; console.log(getDirName()); الناتج يصبح / لاحظ كيف يختلف __dirname اعتمادًا على ما إذا كنت تستخدم webapck أم لا. وذلك لأن webapck تستبدل __dirname بـ /. إنه أمر افتراضي غريب وقد يتسبب في بعض الأخطاء التي يصعب العثور عليها كما يقوم بهذا أيضًا باستخدام __filename. لجعل __dirname يعمل بنفس الطريقة عند تجميعه بواسطة webapck يمكننا تحديث تكوين webpack الخاص بنا على هذا النحو. const path = require('path'); module.exports = { entry: path.resolve(__dirname, './app.js'), output: { path: path.join(__dirname), filename: 'bundle.js', }, node: { __dirname: false, }, }; اقتباس
1 شرف الدين حفني نشر 29 سبتمبر 2021 أرسل تقرير نشر 29 سبتمبر 2021 صحيح لا حاجة لإستخدام ال_dirname في هذا السيناريو, ولكن في مواقف أخرى ستحتاجها, حيث أن ال_dirname تقوم بإرجاع مسار ملف الجافاسكريبت الموجود فيه الشفرة البرمجية, بينما path.resolve() ستقوم بإرجاع مسار المجلد الحالي , في موقفك هنا فإن كﻻ المسارين يعطيان نفس العنوان ولكن في مواقف أخرى قد يختلف كل مسار عن الثاني, فمثلاً من الممكن أن يتم تغيير مسار المجلد الحالي , مثلاً إن قمت بتنفيذ الشفرة processs.chdir(./example في برنامجك ستجد أن المجلد الحالي تغير مساره وبالتالي ستحتاج إلى _dirname اقتباس
السؤال
عبد النور محمد
مع __dirname
بدون __dirname
إذن ما هي الحاجة لاستخدام __dirname هنا ؟؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.