O'z vazifasi uchun o'ziga xos "yo'l" (o'zini tutishi sharti bilan)

Sizning hammangiz bilganingizdek, require funktsiyasi mavjud. Ushbu funktsiyani nisbatan yo'l bilan chaqirsangiz. Nisbatan yo'l chaqiruvning joylashgan joyida ga asoslangan . Bu qanday amalga oshiriladi?

Men ham xuddi shunday xatti-harakatga ega bo'lgan faylni o'qigan vazifani bajarishni xohlayman. Men uni nisbatan bir yo'l bilan o'tgandan so'ng, yo'l chaqiruv joyiga qarab aniqlanadi.

Shunday qilib, asosan, izlayotgan narsa readFile (__ dirname + "/my_file.txt") deb talqin qilish uchun readFile ("./ my_file.txt") /code>.

Albatta, faqatgina __ dirname ni qo'shishim mumkin, lekin men buni yo'qotishga harakat qilaman va buni talab qiladigan funktsiyasini qiziqtiraman.

1
Bilaman. Lekin __ dirname yozishni talab qilishim shart emas, men o'zimning funktsiyasini bajarish mumkinmi yoki yo'qligini aniqlashga harakat qilaman, bu esa __ dirname Har safar. Ehtimol, mening savolim aniq emas edi.
qo'shib qo'ydi muallif Matthijn, manba
talab qiladigan ('./ path') kodini talab qiladigan narsa (__ dirname + '/ path')
qo'shib qo'ydi muallif Yerko Palma, manba

6 javoblar

Javobni sarlavhasida ko'ring Node.js-da, nisbiy yo'l chaqiruvini hal qilishi mumkin bo'lgan . Chaqirilayotgan funktsiyani tekshirish va qidiruvchilar fayllari qaerda joylashganligini aniqlash.

Bu echimdan juda xushbo'y va ehtimol undan foydalanmaydi. Lekin u ishlaydi. Yaxshiroq usullarni taklif qilishni xohlaysiz.

0
qo'shib qo'ydi

Javobni sarlavhasida ko'ring Node.js-da, nisbiy yo'l chaqiruvini hal qilishi mumkin bo'lgan . Chaqirilayotgan funktsiyani tekshirish va qidiruvchilar fayllari qaerda joylashganligini aniqlash.

Bu echimdan juda xushbo'y va ehtimol undan foydalanmaydi. Lekin u ishlaydi. Yaxshiroq usullarni taklif qilishni xohlaysiz.

0
qo'shib qo'ydi

You should use process.cwd() method, as it does exactly what you want. A function like what @MattB suggest, but replacing __dirname

function relativeRequire (name) {
    return require(process.cwd() + '/' + name);
}    

const data = rootRequire('services/data');
0
qo'shib qo'ydi
Asl skriptni qaerdan olib tashlanganini process.cwd() yo'li bilan emas, balki? Men hozirda turgan fayl bo'lishi shart emas.
qo'shib qo'ydi muallif Matthijn, manba
Agar talab qilish funktsiyasiga nisbatan yo'lni o'tayotgan bo'lsam, unda qo'ng'iroqni talab qiladigan fayldan nisbatan ko'rinadi. Men asosan bu o'z vazifam uchun. Shuning uchun men "readFile" ni nisbatan yo'l bilan chaqirsam, u qo'ng'iroqni amalga oshiradigan faylga nisbatan bo'lishi kerak. Qo'ng'iroqqa __dirname qo'shmasdan.
qo'shib qo'ydi muallif Matthijn, manba
Ha, men xohlagan narsamni istayman. Sizning muammoingizni bir oz tushuntirishingiz kerak deb o'ylayman ...
qo'shib qo'ydi muallif Yerko Palma, manba

You should use process.cwd() method, as it does exactly what you want. A function like what @MattB suggest, but replacing __dirname

function relativeRequire (name) {
    return require(process.cwd() + '/' + name);
}    

const data = rootRequire('services/data');
0
qo'shib qo'ydi
Asl skriptni qaerdan olib tashlanganini process.cwd() yo'li bilan emas, balki? Men hozirda turgan fayl bo'lishi shart emas.
qo'shib qo'ydi muallif Matthijn, manba
Agar talab qilish funktsiyasiga nisbatan yo'lni o'tayotgan bo'lsam, unda qo'ng'iroqni talab qiladigan fayldan nisbatan ko'rinadi. Men asosan bu o'z vazifam uchun. Shuning uchun men "readFile" ni nisbatan yo'l bilan chaqirsam, u qo'ng'iroqni amalga oshiradigan faylga nisbatan bo'lishi kerak. Qo'ng'iroqqa __dirname qo'shmasdan.
qo'shib qo'ydi muallif Matthijn, manba
Ha, men xohlagan narsamni istayman. Sizning muammoingizni bir oz tushuntirishingiz kerak deb o'ylayman ...
qo'shib qo'ydi muallif Yerko Palma, manba

Asosiy App.js da quyidagi usulni aniqladim:

global.rootRequire = function(name) {
    return require(__dirname + '/' + name);
}

Keyin boshqa turli xil fayllarda foydalanishim mumkin:

const data = rootRequire('services/data');
0
qo'shib qo'ydi
Ammo, bu faylning yo'lida emas, balki amalga oshiriladigan joydan emas
qo'shib qo'ydi muallif Yerko Palma, manba

Asosiy App.js da quyidagi usulni aniqladim:

global.rootRequire = function(name) {
    return require(__dirname + '/' + name);
}

Keyin boshqa turli xil fayllarda foydalanishim mumkin:

const data = rootRequire('services/data');
0
qo'shib qo'ydi
Ammo, bu faylning yo'lida emas, balki amalga oshiriladigan joydan emas
qo'shib qo'ydi muallif Yerko Palma, manba
NodeJS Uzbekistan
NodeJS Uzbekistan
152 ishtirokchilar

Guruh NodeJS bo'yicha muloqot qilish uchun ochilgan. Sizni qiziqtirsa: @nodejs_uz @react_uz @angular_uz @yiiframework_uz @js_uzb @typescript_uzb @vuejs_uz @ngTashkent @laravel_uz @uzdevgroup Ish o'rinlari @UzDev_jobs

Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb