【问题标题】:Use Sqlite & Knex with Node Module将 Sqlite 和 Knex 与 Node 模块一起使用
【发布时间】:2019-10-12 10:01:33
【问题描述】:

我正在使用电子构建一个桌面应用程序并用于该 JS 和 jQuery。所有这些都作为模块安装并与 "require" 一起使用。它完美无缺。

现在我希望我的数据库带有 sqlite 和 knex,并尝试使用 knex 和 sqlite db 以及应用程序启动节点服务器。

但问题是,knex 找不到 sqlite 模块。

有人可以帮我吗?

HERE is the start

console.log('SQL - Datenbank-Server gestartet');

let express = require('express');
let app = express();

let knex = require('knex');

let server = app.listen(8286, function () {
console.log('DB Server running on port 8286');
});

let connection = knex({
client: 'sqlite3',
connection: {
    filename: './finanzverwaltung.db'
}
});

HERE is the Failure
 Server gestartet.
SQL - Datenbank-Server gestartet
Knex: run
$ npm install sqlite3 --save
Cannot find module 'F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\binding\node-v70-win32-x64\node_sqlite3.node'
Require stack:
- F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\sqlite3.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\dialects\sqlite3\index.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\knex.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\index.js
- F:\Projekte\finanzverwaltung\node_modules\knex\knex.js
- F:\Projekte\finanzverwaltung\app\server\sql_server.js
Error: Cannot find module 'F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\binding\node-v70-win32-x64\node_sqlite3.node'
Require stack:
- F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\sqlite3.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\dialects\sqlite3\index.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\knex.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\index.js
- F:\Projekte\finanzverwaltung\node_modules\knex\knex.js
- F:\Projekte\finanzverwaltung\app\server\sql_server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:659:15)
    at Function.Module._load (internal/modules/cjs/loader.js:577:27)
    at Module.require (internal/modules/cjs/loader.js:715:19)
    at require (internal/modules/cjs/helpers.js:14:16)
    at Object.<anonymous> (F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\sqlite3.js:4:15)
    at Module._compile (internal/modules/cjs/loader.js:808:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:820:10)
    at Module.load (internal/modules/cjs/loader.js:677:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:609:12)
    at Function.Module._load (internal/modules/cjs/loader.js:601:3)
    at Module.require (internal/modules/cjs/loader.js:715:19)
    at require (internal/modules/cjs/helpers.js:14:16)
    at Client_SQLite3._driver (F:\Projekte\finanzverwaltung\node_modules\knex\lib\dialects\sqlite3\index.js:44:12)
    at Client_SQLite3.initializeDriver (F:\Projekte\finanzverwaltung\node_modules\knex\lib\client.js:253:26)
    at Client_SQLite3.Client (F:\Projekte\finanzverwaltung\node_modules\knex\lib\client.js:84:10)
    at new Client_SQLite3 (F:\Projekte\finanzverwaltung\node_modules\knex\lib\dialects\sqlite3\index.js:31:19)
F:\Projekte\finanzverwaltung\node_modules\knex\lib\client.js:257
      throw new Error(`${message}\n${e.message}`);
      ^

Error: Knex: run
$ npm install sqlite3 --save
Cannot find module 'F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\binding\node-v70-win32-x64\node_sqlite3.node'
Require stack:
- F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\sqlite3.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\dialects\sqlite3\index.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\knex.js
- F:\Projekte\finanzverwaltung\node_modules\knex\lib\index.js
- F:\Projekte\finanzverwaltung\node_modules\knex\knex.js
- F:\Projekte\finanzverwaltung\app\server\sql_server.js
    at Client_SQLite3.initializeDriver (F:\Projekte\finanzverwaltung\node_modules\knex\lib\client.js:257:13)
    at Client_SQLite3.Client (F:\Projekte\finanzverwaltung\node_modules\knex\lib\client.js:84:10)
    at new Client_SQLite3 (F:\Projekte\finanzverwaltung\node_modules\knex\lib\dialects\sqlite3\index.js:31:19)
    at Knex (F:\Projekte\finanzverwaltung\node_modules\knex\lib\knex.js:57:42)
    at Object.<anonymous> (F:\Projekte\finanzverwaltung\app\server\sql_server.js:12:18)
    at Module._compile (internal/modules/cjs/loader.js:808:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:820:10)
    at Module.load (internal/modules/cjs/loader.js:677:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:609:12)
    at Function.Module._load (internal/modules/cjs/loader.js:601:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:873:10)
    at internal/main/run_main_module.js:21:11

【问题讨论】:

  • 嗨,谢谢,但改变了任何东西 - 仍然找不到模块:Knex: run $ npm install sqlite3 --save 找不到模块 'F:\Projekte\finanzverwaltung\node_modules\sqlite3\lib\binding\node -v70-win32-x64\node_sqlite3.node'
  • 你试过npm install sqlite3 --build-from-source吗?
  • 不是错误:Error: msbuild` 失败,退出代码:1` node-pre-gyp 错误...

标签: sqlite electron


【解决方案1】:

所以最后我做到了 - 解决方案是使用电子生成器......

"postinstall": "electron-builder install-app-deps" 

【讨论】:

    【解决方案2】:

    将 sqlite 与电子捆绑在一起时遇到问题。 Electron builder 将允许您为您的平台架构构建 electron,但也必须为尝试运行它的其他系统重新构建。通过 npm 安装 electron-rebuild 后,您可以将以下脚本添加到 package.json。

    "rebuild": "electron-rebuild -f -w sqlite3"
    

    然后运行:

    npm run rebuild
    

    您可能会遇到一些额外的依赖错误,就像我在需要 Visual Studio 构建工具和 python 2 的 Windows 上所做的那样。

    这是我找到的关于这个主题的视频教程:https://www.youtube.com/watch?v=c76FTxLRwAw&

    根据您的需要,不是直接将 sqlite 与 electron 一起使用,另一种方法是使用单独的 nodejs 服务器来访问您的数据库,我发现这不那么令人头疼。

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 2017-08-29
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      相关资源
      最近更新 更多