- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题FrameWork - ElectronJS
我的程序使用.json
文件保存用户输入的数据。在开发环境中,这些文件编写得很完美,但是用electron-packager
打包后,不再写入JSON文件,这完全使我的程序无效。
我主要使用那些JSON
文件来编写程序,因此完全删除它们将再次从头开始编写程序。有没有办法像在开发环境中那样使程序在客户端PC中写入JSON
文件。
样例程序
这只是一个示例程序,但是我所有的代码都是这种格式。
//JavaScript
//This Javascript catches user inputs and send them to jsonWriter function
document.getElementById("save").addEventListener('click', async function(e) {
e.preventDefault()
var userData = document.getElementById('username').value
var acctData = document.getElementById('account').value
var formData = {
username: userData,
account: acctData
}; // create JS object
await writer.jsonLC(formData);
});
// This is my json Writer function
async function jsonForAuth(data){
let element = JSON.stringify(data);
fs.writeFileSync(__dirname + '\\data\\auth.json', element)
//All my directory for 'fs' are written in such format with a '__dirname'
}
module.exports.jsonLC = jsonForAuth;
// All of this works perfectly on dev-environment (VS-Code)
现在我用
electron-packager
打包
// Here is my package.json for reference
{
"name": "electron_app",
"productName": "Test App",
"version": "1.0.0",
"description": "",
"main": "main.js",
"dependencies": {
"asar": "^3.0.3",
"axios": "^0.20.0",
"fs-extra": "^9.0.1",
"jwt-decode": "^3.0.0-beta.2",
"keytar": "^6.0.1",
"node-fetch": "^2.6.1",
"puppeteer-core": "^5.3.0"
},
"devDependencies": {
"electron": "^10.1.2",
"electron-packager": "^15.1.0"
},
"scripts": {
"start": "electron .",
"package-mac": "electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds",
"package-win": "electron-packager . electron_app --overwrite --asar --platform=win32 --arch=x64 --icon=assets/img/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Test App\"",
"package-linux": "electron-packager . electron-tutorial-app --overwrite --asar=true --platform=linux --arch=x64 --icon=assets/icons/png/1024x1024.png --prune=true --out=release-builds"
},
"keywords": [],
"author": "",
"license": "ISC"
}
包装代码与
This guide here完全相同。
json files
的脚本后,它们可以正常工作。但是现在,由于不再创建json文件,上面的
sample program
变得无用了。
Note: I have NOT used ipcRenderer() anywhere in my program.
更新
asar
是只读文件。
最佳答案
是的,写入应用程序位置不是一个好主意,并且经常被禁止。使用通常用于应用程序设置等的appdata文件夹应该足够了。
app.getPath(name)
是您要寻找的功能。
然后执行以下操作:
fs.writeFileSync(app.getPath("appData") + "/auth.json", element);
甚至更好,使用
path
:
fs.writeFileSync(path.join(app.getPath("appData"), "auth.json"), element);
关于node.js - 在ElectronJS(Asar)中编写JSON文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64152400/
我正在尝试创建一个应用程序,该应用程序在 2 个连接的显示器上以 Kiosk 模式打开 2 个不同的 BrowserWindows。我看到的有关如何执行此操作的唯一相关文档来自 this page这表
我是 Windows 上的 ElectronJS 新手,在 Linux 上使用之前没有遇到过这样的问题。 我的问题是,当我输入 CMD npm start 时,没有任何错误,但不打开任何仅 Windo
function overlayMaker(){ ffmpeg() .on('end', onEnd ) .on('progress', onProgress)
有没有一种方法可以使用ipcRenderer标识哪个窗口发出事件,以便订阅该窗口以监听外部事件? 事件处理程序如下所示: _registerListener(event, {windowName, i
在 Electron 应用程序中,我们可以在渲染器和主进程中都需要 Node 模块。我已经意识到,当我在渲染器进程的 main(html 的入口脚本)中需要一个模块时,它在我拥有的每个文件中都可用。我
我在与mysql交互时遇到一些麻烦问题。 我有一个表格。当我尝试单击/提交,然后调用我的函数tata()对数据库进行某些操作(选择或其他操作)时,会随机调用connection.query。有时,当我
嗨,我将ElectronJS与React结合使用时,每当我单击lectorn js菜单上的保存按钮时,都会触发一个事件。我正在尝试监听组件中的事件,但是单击菜单项时出现此错误; Uncaught Ex
我是Electron JS的新手,并且尝试阅读文档,但没有用。 我只是想知道是否可以创建一个浏览器窗口,然后在所有正在运行的应用程序后面显示该窗口。那可能吗? 最佳答案 您可以在其他窗口上使用win.
我正在使用 Electron JS 和 react JS 构建一个离线应用程序。 启动步骤中,首先是加载一个大文件(超过 1 GB 且无法拆分) 所以我必须等待大约 50-60 秒,直到这个文件完全加
我正在尝试从ipcMain异步地将消息/数据发送到ipcRender,按照那里描述的代码-https://electronjs.org/docs/api/ipc-main,在main中- // In
我正在尝试将文本从一个窗口发送到另一个窗口,但是我做不到 这是我主要听的地方 ipcMain.on('fromRenderer1', (e,arg) => { createWindow2()
我是 Electron 新手,想处理拖放功能。 想要删除文件并获取其扩展名。根据扩展名更改屏幕上的某些内容。 即,如果将 .mp3 文件放入其中,则希望将 backgroundColor 更改为绿色,
我正在寻找一种在提交表单后自动刷新窗口的方法。我尝试使用 window.on("close", () => { window2.reload(); }) 但它什么也没做。我如何在每次提交表单时重新加载
每当我切换到另一个事件窗口时,我都会尝试获取一个检测事件。我知道 npm 上有一些模块可以告诉您事件窗口,但是是否有 Electron native 方法来检测事件窗口中的变化(这不是我的 Elect
我试过了,但这给了我一个带有菜单栏的新窗口。我在main.js文件中使用win.setMenu(null)删除了主窗口菜单栏。但我找不到在新窗口(“添加项目窗口”)中执行此操作的方法 请看下面的图片看
我想使用 electronjs 开发一个桌面应用程序。该应用程序必须有一个离线和在线数据库,这样当系统连接到互联网时,数据库可以同步..请问我该如何实现这一点。使用nodejs开发api 最佳答案 当
我已经用electronic-packager构建了electronicJS应用程序,构建完成后,当我启动它时,所有数据都消失了。而且我遇到了一个开发应用程序之前从未遇到过的错误。 (C.F屏幕截图)
我正在使用 ElectronJS 开发一个桌面应用程序。当我对主 html 文件或它调用的任何 javascript 文件进行更改时,我在运行程序后得到了一个缓存版本。 我尝试过的事情: 在主 Ele
我有一个带有 Angular6 渲染器的 ElectronJS 应用程序。我的 Angular6 部分有调用 Java REST API 的消费者 key 和 secret 。因为该应用程序当然是可安
我正在构建一个跨平台桌面应用程序。我正在使用 electronjs 框架开发我的桌面应用程序。我想在我的应用程序启动时添加每 5 分钟截取一次屏幕截图的功能! 帮助将不胜感激我的 main.js //
我是一名优秀的程序员,十分优秀!