Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro ao criar o arquivo do curso

data.js

const jsonfile = require('jsonfile-promised')
const fs = require('fs')

module.exports = {
    salvaDados(curso, tempoEstudado) {
        let arquivoDoCurso = __dirname + '/data/'+ curso + '.json';
        if(fs.existsSync(arquivoDoCurso)) {
            this.adicionaTempoAoCurso(arquivoDoCurso, tempoEstudado);
        } else {
            this.criaArquivoDeCurso(arquivoDoCurso,{})
                .then(() => {
                    this.adicionaTempoAoCurso(arquivoDoCurso, tempoEstudado);
                });
        }
    },
    adicionaTempoAoCurso(arquivoDoCurso, tempoEstudado) {
        let dados = {
            ultimoEstudo: new Date().toString(),
            tempo: tempoEstudado
        }
        jsonfile.writeFile(arquivoDoCurso, dados, {spaces: 2})
                .then(() => {
                    console.log('Tempo salvo com sucesso');
                }).catch((err) => {
                    console.log(err);
                })
    },
    criaArquivoDeCurso(nomeArquivo, conteudoArquivo) {
        jsonfile.writeFile(nomeArquivo, conteudoArquivo)
            .then(() => {
                console.log('Arquivo criado')
            }).catch((err) => {
                console.log(err);
            })
    }
}

Main.js

const { app, BrowserWindow, ipcMain } = require('electron');
const data = require('./data');

app.on('ready', () => {
    console.log('Aplicação iniciada');
    let mainWindow = new BrowserWindow({
        width: 600,
        height: 400
    })

    mainWindow.loadURL(`file://${__dirname}/app/index.html`)
})

app.on('window-all-closed', () => {
    app.quit();
})

let sobreWindow = null;
ipcMain.on('abrir-janela-sobre', () => {
    if (sobreWindow == null) {
        sobreWindow = new BrowserWindow({
        width: 300,
        height: 220,
        alwaysOnTop: true,
        frame: false
    });
    sobreWindow.on('close', () => {
        sobreWindow = null
    })
}
    sobreWindow.loadURL(`file://${__dirname}/app/sobre.html`)
})

ipcMain.on('fechar-janela-sobre', () => {
    sobreWindow.close()
})

ipcMain.on('curso-parado', (event, curso, tempoEstudado) => {
    console.log(`O cruso ${curso} foi estudado por ${tempoEstudado}`);
    data.salvaDados(curso, tempoEstudado);
})

Ao tentar salvar um arquivo que não existe ele abre uma janela do electron assim: A JavaScript error occured in the main process Uncaught Exemption: TypeError: Cannot read property 'then' of undefined at Object.salvaDados at EventEmmiter.ipcMain.on

1 resposta

Oi Dhebora, tudo bem? A sua função salvaDados usa a função criaArquivoDeCurso que não está retornando nada para que seja usado o then.

Acho que faltou você usar o return no seu jsonfile que está dentro da função criaArquivoDeCurso para que assim, você consiga usar o then e prosseguir salvando os dados.

Será que não é isso?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software