Когда настройки интерфейса меняются, мне нужно предпринять некоторые действия. Например, я должен остановить cronjob и запустить его снова. Но когда я хочу остановить объект cronjob, объект не определен. Как мне преодолеть это?
main. js
const path = require('path');
const electron = require('electron');
const cron =require('./cron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const ipcMain = electron.ipcMain;
app.allowRendererProcessReuse = false;
function createWindow() {
// Tarayıcı penceresini oluştur.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
nodeIntegrationInWorker: true,
preload: path.join(__dirname, 'preload.js')
}
})
// ve uygulamanın index.html dosyasını yükle.
mainWindow.loadFile('src/index.html')
// DevTools açmak için kullanılır.
mainWindow.webContents.openDevTools()
cron.startcron();
}
app.whenReady().then(createWindow)
// Quit when all windows are closed.
app.on('window-all-closed', () => {
// MacOS'de kullanıcı CMD + Q ile çıkana dek uygulamaların ve menü barlarının
// aktif kalmaya devam etmesi normaldir.
if (process.platform !== 'darwin') app.quit()
})
app.on('activate', () => {
// MacOS'de dock'a tıklandıktan sonra eğer başka pencere yoksa
// yeni pencere açılması normaldir.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
});
ipcMain.on("settingschanged", (event, settings) => {
cron.stopcron();
cron.setCronString(settings.cronstring);
cron.startcron();
});
cron. js
var CronJob = require('cron').CronJob;
const electron = require('electron');
const config = require('electron-json-config');
const logger = require('./logger');
var cronstring = "* * * * * *";
const ipc = electron.ipcRenderer;
var joblist = [];
let webservicejob;
function setCronString(cronstring) {
stopcron();
config.set('cronString', cronstring);
startcron();
}
function startcron() {
cronstring = config.get('cronString');
logger.info('Cron Çalışmaya başladı');
webservicejob = new CronJob(cronstring, () => {
logger.debug('Cron Tetiklendi');
ipc.send('callWebservice');
if (joblist.length > 0) {
var index = joblist.findIndex(u => new Date(u.recordparameter.starttime) < new Date() && !u.started);
if (index > -1) {
logger.info('Bir eğitim bulundu, kayıt işlemi başlatılıyor.');
ipc.send('startAdobeConnect', joblist[index]);
eventEmitter.emit('startAdobeConnect', joblist[index]);
joblist[index].started = true;
}
}
}, null, true);
webservicejob.start();
}
function stopcron() {
webservicejob.stop();
}
module.exports.setCronString = setCronString;
module.exports.startcron = startcron;
module.exports.stopcron = stopcron;
module.exports.job = webservicejob;
если я вызываю функцию stopcron, я получаю следующую ошибку. И я проверяю, что webservicejob не определено.
A JavaScript Произошла ошибка в основном процессе. Uncaught Exception: TypeError: Невозможно прочитать свойство stop из undefined в Object.stopcron