【发布时间】:2022-10-30 15:57:00
【问题描述】:
我正在使用 React 和 Electron JS 和使用 sqlite3 的数据库文件创建一个 Windows 应用程序。我将数据库文件保存在根文件夹的“/databases”文件夹中。我注意到的一件事是 database.db 文件仅在我在开发模式下运行“npm start”后创建。
当我使用 electron-builder 构建应用程序时,应用程序的创建没有任何问题。问题是,第一次安装应用程序后,除了 db 文件之外的所有文件都被创建。该应用程序在安装后会自动打开。由于未创建 db 文件,因此会引发类似“无法读取数据库”的错误。一旦我关闭应用程序并通过打开 .exe 文件重新打开它,就会创建数据库文件夹和文件。我需要将 DB 文件与构建的根文件夹中的构建打包在一起,而不是在电子的 /build/resources/dist 文件夹中。任何帮助,将不胜感激。
下面是我的 package.json:
"build": {
"appId": "com.electron",
"files": [
"dist/electron.js",
"dist/index.html",
"dist/main.js",
"dist/images",
"dist/preload.js",
"dist/**"
],
"extraResources": [{
"from": "./databases/",
"to": "databases/",
"filter": [
"**/*"
]
}],
"directories": {
"output": "./electron"
},
"electronDownload": {
"cache": "./electron/cache"
},
"win": {
"target": "msi",
"icon": "./src/assets/images/icon.png"
},
"asar": false
}
下面是我在 electron.js 中处理数据库创建的方式:
const dbName = 'mydatabase.db';
const dbPath = path.join(path.dirname(__dirname), 'databases');
const fullDbPath = path.join(dbPath, dbName);
if(!fs.existsSync(dbPath)) {
fs.mkdirSync(dbPath, { recursive: true });
}
【问题讨论】:
-
你有没有找到处理它的方法?
标签: node.js reactjs electron electron-builder node-sqlite3