如何使 SQLite 与 Angular 4+、Electron 和 NodeJS 一起工作

Posted

技术标签:

【中文标题】如何使 SQLite 与 Angular 4+、Electron 和 NodeJS 一起工作【英文标题】:How to make SQLite to work with Angular 4+, Electron and NodeJS 【发布时间】:2018-02-14 17:51:50 【问题描述】:

我正在尝试使用以下方式构建一个小型桌面应用程序:

角 4+ NodeJS 电子 SQLite3

NodeJS 将用于扫描本地用户 hdd 并将找到的特定文件插入 SQLite3 数据库。

我检查了许多文档和建议。他们中的大多数人建议使用 NodeJS express 框架并在 Angular 4+ -> Express -> SQLite3 之间创建层。

我想避免使用 express 框架,因为它将是桌面应用程序,根本不需要它。

我尝试了什么以及我做了什么:

我安装了:

   "sqlite3": "^3.1.9",
   "node-pre-gyp": "^0.6.36",

作为我项目中的依赖项。

如果你想使用原生 nodejs 库,你应该运行电子重建。所以我也安装了电子重建:

"electron-rebuild": "^1.6.0"

作为 devDependencies 并使用以下命令运行它:

./node_modules/.bin/electron-rebuild

重建 sqlite3 成功完成。

然后我运行电子应用程序并收到以下错误:

/~/node-pre-gyp/lib/node-pre-gyp.js
Module build failed: Error: ENOENT: no such file or directory, open '/home/haris/development/walter/angular-electron-starter/node_modules/node-pre-gyp/lib/node-pre-gyp.js'
    at Error (native)
 @ ./~/sqlite3/lib/sqlite3.js 1:13-36
 @ ./src/app/home/home.component.ts
 @ ./src/app/home/index.ts
 @ ./src/app/app.module.ts
 @ ./src/app/index.ts
 @ ./src/main.browser.ts
 @ multi (webpack)-dev-server/client?http://localhost:3000 ./src/main.browser.ts

我卡在这里。我尝试了更多类似的方法:

1. Removing node_modules
2. npm install --build-from-source

但我仍然遇到同样的错误。

任何建议或帮助将不胜感激。

【问题讨论】:

根据我有限的经验,node-gyp / node-pre-gyp 构建的一个常见原因是缺少构建工具。你在什么操作系统上? @ippi 我使用的是 Linux / Ubuntu 16.04 ( 64bit )。 对于 alpine,对于 node-gyp,您至少需要 make gcc g++ python。不确定 ubuntu。 (我也认为你真正的错误在别处) @ippi 我苦苦挣扎了两天多才找到问题所在,但仍然没有成功。感谢您的帮助。 【参考方案1】:

我刚刚发布了一个示例项目,展示了如何使用 Electron、Angular4 和 Sqlite3 构建桌面应用程序。你可以克隆它here

注意 我已经全局安装了 node-gyp。

希望对你有帮助

【讨论】:

【参考方案2】:

因为它可能对其他人有价值。我已经按照@leota 的步骤进行操作(非常感谢顺便说一句!)。

我的问题是我有 Python 2.7 x64 版本,我认为它需要 32 位版本。当我安装了标准版本时,我的重建过程运行良好!

【讨论】:

以上是关于如何使 SQLite 与 Angular 4+、Electron 和 NodeJS 一起工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Angular 8 与 IE11 兼容?

何时或如何将 QSqlTableModel 上的 fetchMore() 与 SQLite 数据库一起使用以使 rowCount() 工作?

Angular 4 - 如何使垫卡填充整个父组件区域

如何使 tailwindcss 与当前的 Angular 6 一起工作?

如何使 select2 与 Angular 7 一起使用

如何将 sqlite3 模块与电子一起使用?