Используйте Sqlite & Knex с Node Module - PullRequest
0 голосов
/ 26 мая 2019

я создаю настольное приложение с электронным и использую для этого 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

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Вы сталкиваетесь с проблемами при объединении sqlite вместе с электроном. Сборщик электронов позволит вам создавать электроны для архитектуры вашей платформы, но также придется перестраивать для других систем, пытающихся запустить его. После того, как вы установили electronic-rebuild через npm, вы можете добавить следующий скрипт в свой package.json.

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

затем запустите:

npm run rebuild

Вы можете столкнуться с некоторыми дополнительными ошибками для зависимостей, как я делал в Windows, нуждающейся в средствах сборки Visual Studio и Python 2.

Вот видеоурок, который я нашел по этой теме: https://www.youtube.com/watch?v=c76FTxLRwAw&

В зависимости от ваших потребностей, вместо использования sqlite напрямую с электронным способом, альтернативным вариантом может быть использование отдельного сервера nodejs для доступа к вашей базе данных, что, как я обнаружил, не вызывает головной боли.

0 голосов
/ 28 мая 2019

Итак, наконец, я это сделал - и решение состоит в том, чтобы использовать электронный строитель ...

"postinstall": "electron-builder install-app-deps" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...