Я не могу получить доступ к объекту в электронике - PullRequest
0 голосов
/ 24 марта 2020

Когда настройки интерфейса меняются, мне нужно предпринять некоторые действия. Например, я должен остановить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...