我有一个 electron 应用程序,我将它与
create-electron-app
一起使用。
我的电子主进程文件位于 public 文件夹中,我的 sqlite3 数据库也是如此。
当我在开发中引用数据库时,它按预期工作,因为我可以访问路径:
F:\www\project-name\public\api\db\demodb01
但在生产中该路径不存在(我想说隐藏在app.asar后面):
C:\Users\userName\AppData\Local\Programs\project-name\resources\app.asar\build\api\db\demodb01
如何在生产中定位数据库文件?
在应用程序中存储文件时,您应该使用 app.getPath('userData') 将它们存储在应用程序范围之外,从而使它们保持持久状态。
nedb 是 Electron 应用程序的常见选择,因为它是用 JavaScript 编写的轻量级数据库。如果您还没有检查过,我建议您检查一下。
我在 Electron 应用程序中将 Sequelize 与 SQLite 结合使用,并将数据库文件保存在 userData 目录中。这是我正在使用的代码:
const { Sequelize } = require("sequelize");
const path = require("path");
const { app } = require("electron");
const sequelize = new Sequelize({
dialect: "sqlite",
storage: path.join(app.getPath("userData"), "database.sqlite"),
});
module.exports = {
sequelize,
};
在上面的代码中,我使用 path.join(app.getPath("userData"), "database.sqlite") 指定数据库存储路径。构建我的应用程序后,我可以在 Windows 上的以下位置找到数据库文件:
C:\Users\<YourUserName>\AppData\Roaming\<YourAppName>\database.sqlite
您还有另一种解决方案。请按照以下步骤操作:
首次安装electron-is-dev
将这些代码添加到 main.js 文件中: main.js
现在在 package.json 中进行以下标记更改: package.json
谢谢你。