merhaba benim express tabanlı bir websitem var aşşağıdaki kodda görüldüğü gibi sayfaları require edip sayfalara bazı veriler gönderiyorum örnek profiles, projects vs. Bunları o sayfa içinde yapınca websitesi çok yavaşlıyor o yüzden ana dizinde verileri alıp dosyalara gönderiyorum. Ancak bu fonksiyonu döngüye alsamda profiles veya projects ( bu ikisi örnek gönderdiğim tüm verilerde durum aynı. ) güncellenmiyor. Ben verileri ana dizinde güncelliyorum yeni veriler ile web sayfalarının backend kodlarını nasıl yeniden require edebilirim siteyi kapatmadan arkaplanda.
const fs = require("fs");
function clearRequireCache(modulePath) {
delete require.cache[require.resolve(modulePath)];
}
// Fonksiyonu oluşturuyoruz
function readdirRecursive(directory, callback) {
fs.readdirSync(directory).forEach((file) => {
const fullPath = path.resolve(directory, file);
if (fs.statSync(fullPath).isDirectory()) {
// Eğer bir klasörse, rekürsif olarak çağır
readdirRecursive(fullPath, callback);
} else {
// Eğer dosyaysa, işlem yap
callback(fullPath);
}
});
}
// Kullanım örneği
function requirePages() {
readdirRecursive("./api-pages", (filePath) => {
if (filePath.endsWith(".js")) {
// Şu anki modül için cache'i temizle
clearRequireCache(filePath);
// Sayfa modülünü tekrar require et
const pageModule = require(filePath);
// Sayfa için güncel parametreleri al
pageModule(app, checkAuth, db, moment, renderTemplate, config, top20code, lastshared, projects, profiles, codeviews, client);
console.log(`[API] ${filePath} yüklendi!`);
}
});
}
// Fonksiyonu başlangıçta çalıştır
requirePages();