【发布时间】:2020-06-10 20:32:01
【问题描述】:
我正在尝试在我的 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);
});
该文件存在,因为我收到了正确的 console.log 消息,它看起来像:
/tmp/.mount_xxxxxx/resources/app.asar.unpacked/dist/assets/sqlite.db
但是,来自new sqlite.Database(...) 我收到以下错误,因为该文件不存在:
错误:SQLITE_CANTOPEN:无法打开数据库文件
【问题讨论】:
-
请问您为什么将数据库放在 assets 文件夹中?
-
@HoangTranSon 只是因为我希望它包含在应用程序构建的
dist目录中。我知道我可以通过在我的angular.json文件中添加一个新条目来使用不同的路径,但我只是想快速拥有一个工作原型,并且默认情况下包含assets文件夹。 -
请问当您将该文件放入
assets文件夹时如何控制安全问题?我面临同样的反应问题,现在的解决方法是将 db 文件放入public文件夹。看起来不是个好办法。 -
@HoangTranSon 抱歉,我没有任何安全问题,因为我的 sqlite 数据库根本不包含任何敏感数据,而且它已经公开了
标签: node.js angular sqlite electron node-sqlite3