2016-08-02 3 views
3

В моем электронном приложении я установил sqlite3 через НПЙElectron приложение не может найти sqlite3 модуль

npm install sqlite3 

Но как только я пытаюсь взаимодействовать с БД не может найти базу данных, вот лог:

Uncaught Error: Cannot find module 'D:\play\electron-quick-start\node_modules\sqlite3\lib\binding\electron-v1.3-win32-x64\node_sqlite3.node'

Вот JS код:

console.log('whooooo'); 

var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('../db/info.db'); 

db.serialize(function() { 
    db.run("CREATE TABLE lorem (info TEXT)"); 

    var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); 
    for (var i = 0; i < 10; i++) { 
     stmt.run("Ipsum " + i); 
    } 
    stmt.finalize(); 

    db.each("SELECT rowid AS id, info FROM lorem", function (err, row) { 
     console.log(row.id + ": " + row.info); 
    }); 
}); 
db.close(); 

Я также пытаюсь таким образом:

npm install sqlite3 --build-from-source 

но он не может быть установлен!

Кроме того, я использую Python3. Как вы устанавливаете модуль для работы с электроном?

+0

Вы получили какое-либо решение для этого? – Jay

ответ

7

Вы должны создать этот собственный модуль с конфигурациями на основе Electron.

Try:
1. cd node_modules/sqlite3
2. npm run prepublish
3. node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64
4. node-gyp rebuild --target=1.3.1 --arch=x64 --target_platform=win32 --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64

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

+1

Работал как шарм, спасибо, помните, если у вас нет узла gyp, установите его, прежде чем делать это. –

+1

Это не работает для меня. Любое решение этой ошибки? Ошибка: не удалось Ошибка: не удается найти модуль 'path_to_project \ node_modules \ sqlite3 \ lib \ binding \ electronic-v1.4-win32-ia32 \ node_sqlite3.node' – Jay

+0

http://stackoverflow.com/questions/41307807/i-am -getting-an-error-while-connect-to-sqlite3-database есть ли какое-либо решение для этого – Jay

12

Во-первых:

npm install electron-rebuild

попробуйте это несколько раз:

./node_modules/.bin/electron-rebuild -w sqlite3 -p

+0

работает отлично, если на окнах используется некоторый клиент bash (я использовал git bash) – Ajay

0

1: Включить восстановление в Package.json файл и установить НПМ электрон-перестраивать

{ 
    "name": "electron-quick-start", 
    "version": "1.0.0", 
    "description": "A minimal Electron application", 
    "main": "main.js", 
    "scripts": { 
    "start": "electron .", 
    "rebuild": "electron-rebuild -f -w sqlite3" 
    }, 
    "repository": "https://github.com/electron/electron-quick-start", 
    "keywords": [ 
    "Electron", 
    "quick", 
    "start", 
    "tutorial", 
    "demo" 
    ], 
    "author": "author", 
    "license": "CC0-1.0", 
    "devDependencies": { 
    "@types/file-saver": "0.0.1", 
    "electron": "1.7", 
    "electron-rebuild": "^1.6.0" 
    }, 
    "dependencies": { 
    "sqlite3": "^3.1.13" 
    } 
} 

2: in stall python 2.7 и добавить свой путь к переменной окружения, например C: \ Python27;

3: НПМ INSTALL, а затем НПМ запустить восстановление

Смежные вопросы