Fra*_*rzi 4 sqlite node.js electron node-sqlite3 angular
我正在尝试在我的 Angular + Electron 应用程序中使用 node-sqlite3 打开 sqlite 数据库文件。
尽管我确保该文件存在并且 Electron 可以读取它,但当我尝试使用以下命令创建 sqlite 数据库时:
import * as sqlite from 'sqlite3';
// ...
const path = `${__dirname}/assets/sqlite.db`;
const fs = require('electron').remote.require('fs');
console.log(path);
if (fs.existsSync(AppConfig.sqlitePath)) {
console.log('the file exists');
} else {
console.log('the file does not not');
}
const myDb = new sqlite.Database(path, sqlite.OPEN_READONLY, (error) => {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
该文件存在,因为我收到了正确的console.log
消息,它看起来像:
/tmp/.mount_xxxxxx/resources/app.asar.unpacked/dist/assets/sqlite.db
Run Code Online (Sandbox Code Playgroud)
但是,new sqlite.Database(...)
我收到以下错误,因为该文件不存在:
错误:SQLITE_CANTOPEN:无法打开数据库文件
artiebits建议我看看asarUnpack,这确实是正确的选择。
我通过以下方法解决了:
1)将以下内容添加到我的electron-builder.json
:
"asarUnpack": [
"dist/assets/sqlite.db"
],
Run Code Online (Sandbox Code Playgroud)
2)更换:
const path = `${__dirname}/assets/sqlite.db`;
Run Code Online (Sandbox Code Playgroud)
和:
const path = `${__dirname}/assets/sqlite.db`.replace('app.asar', 'app.asar.unpacked');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21646 次 |
最近记录: |