Как сохранить / открыть файл в рамках основного процесса JS? - PullRequest
0 голосов
/ 26 июня 2019

Итак, у меня есть пункт меню, который на click запускает функцию, но функция сохранения требует document.getElementById, но основной процесс не может найти документ. Как я могу запустить функцию в main.js?

Я пытался использовать тот же код, но в основном документе, но по какой-то причине он не работает так же хорошо. Но я хочу сохранить только из меню.

Вот часть меню:

{
        label: 'File',
        submenu: [
            {
                label: 'New File',
                accelerator: 'CmdOrCtrl+N',
                click(){
                    newFile();
                }
            },
            {
                type: 'separator'
            },
            {
                label: 'Save',
                accelerator: 'CmdOrCtrl+S'
            },
            {
                label: 'Save As',
                accelerator: 'Shift+CmdOrCtrl+S'
            },
            {
                label: 'Open',
                accelerator: 'CmdOrCtrl+O'
            }
        ]
    },

Вот код сохранения, например:

function newFile() {
    dialog.showSaveDialog((fileName) => {
        if (fileName === undefined) {
            alert("You didnt save the file!");
            return;
        }

        var content = ipc.getElementById('editor').innerText;
        fs.writeFile(fileName, content, (err) => {
            if (err) console.log(err);
            alert("The file has been successfilly saved.")
        })
    })
}

Вот код открытого файла:

function openFile() {
    document.getElementById('loadFile').addEventListener("click", () => {
        dialog.showOpenDialog((fileName) => {
            if (filename === undefined) {
                console.log('No files were selected')
                return
            }
            fs.readFile(filename[0], "utf-8", (err, data) => {
                console.log("Cannot read file, error: ", err);
                return;

                document.getElementById('editor').innerText = data;
            })
        })
    }, false)
}

Это работает, пока я на самом деле не сохраню его, тогда я получил эту ошибку:

Uncaught Exception:
TypeError: Cannot read property 'getElementById' of undefined
    at /Users/joeyscript/Documents/Code/Activetype/app.js:111:27
    at Function.wrappedCallback (/Users/joeyscript/Documents/Code/Activetype/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/api/dialog.js:189:24)

Я ожидал, что он сохранится / откроется, но в основном файле js нет модуля документов.

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