#electron #electron-forge
Вопрос:
Я изучаю электрон.
Вот мое приложение hello word, у него есть форма, когда он отправляет данные, сохраненные в файл JSON, также у него есть страница со списком, здесь он считывает данные из файла JSON и список на странице.
сохранение и чтение данных работают, как и ожидалось в процессе разработки, но когда я создаю файл распространения, это не сохранение или чтение данных.
Вот мой main.js
const { app, BrowserWindow, ipcMain } = require("electron");
const path = require("path");
const fs = require("fs");
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule: true,
},
});
//win.webContents.openDevTools();
win.loadFile("application/index.html");
}
app.whenReady().then(() => {
createWindow();
});
ipcMain.on("passwordSubmit", async (ev, data) => {
let file = await fs.readFileSync(path.resolve(__dirname, "data.json"), {
encoding: "utf8",
});
let dataCollection = JSON.parse(file);
console.log(dataCollection);
dataCollection.push(data);
let resposne = await fs.writeFileSync(
path.resolve(__dirname, "data.json"),
JSON.stringify(dataCollection)
);
});
ipcMain.handle("fetchData", async function (arg) {
let file = await fs.readFileSync(path.resolve(__dirname, "data.json"), {
encoding: "utf8",
});
let dataCollection = JSON.parse(file);
return dataCollection;
});
try {
require("electron-reloader")(module);
} catch (_) {}
и вот мой runderer.js
let ipcRenderer = require("electron").ipcRenderer;
const $ = require("jquery");
ipcRenderer.invoke("fetchData", "check").then((result) => {
if($('#data').length){
result.forEach(({domain, username, password}) => {
$('#data').append(`<tr><td>${domain}</td><td>${username}</td><td>${password}</td></tr>`);
});
}
});
$("#new-credentials").on("submit", function (ev) {
ev.preventDefault();
let formValue = $(this).serializeArray();
let data = {};
formValue.forEach((item) => {
data[item["name"]] = item["value"];
});
ipcRenderer.send("passwordSubmit", data);
$(this)[0].reset();
window.location.href = "index.html";
});
Вот команда, используемая для распространения сборки
electron-forge make
Any help will be appreciated.