Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use sqlite3 module with electron?

I want to develop desktop app using electron that uses sqlite3 package installed via npm with the command

npm install --save sqlite3 

but it gives the following error in electron browser console

Uncaught Error: Cannot find module 'E:\allcode\eapp\node_modules\sqlite3\lib\binding\node-v45-win32-x64\node_sqlite3.node' 

My development environment is windows 8.1 x64 node version 12.7

my package.json file looks like this:

{   "name": "eapp",   "version": "1.0.0",   "description": "",   "main": "index.js",   "scripts": {     "start": "electron ."   },   "author": "",   "license": "ISC",   "devDependencies": {     "electron-prebuilt": "^0.32.1"   },   "dependencies": {     "angular": "^1.3.5",        "sqlite3": "^3.1.0"   } } 

index.js file

var app = require('app'); var BrowserWindow = require('browser-window');  require('crash-reporter').start(); var mainWindow = null;   app.on('window-all-closed', function() {       if (process.platform != 'darwin') {         app.quit();     } });  app.on('ready', function() {     // Create the browser window.     mainWindow = new BrowserWindow({width: 800, height: 600});      mainWindow.loadUrl('file://' + __dirname + '/index.html');        mainWindow.openDevTools();       mainWindow.on('closed', function() {                mainWindow = null;     }); }); 

my.js file

var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database('mydb.db');  db.serialize(function() {     db.run("CREATE TABLE if not exists 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(); 

index.html file

<!DOCTYPE html> <html> <head lang="en">     <meta charset="UTF-8">     <title></title> </head> <body> <div >     <div>         <h2>Hello</h2>     </div>  </div> <!--<script src="js/jquery-1.11.3.min.js"></script>--> <script src="js/my.js"></script> </body> </html> 
like image 518
manas Avatar asked Sep 10 '15 14:09

manas


People also ask

How do I use sqlite3?

Start the sqlite3 program by typing "sqlite3" at the command prompt, optionally followed by the name the file that holds the SQLite database (or ZIP archive). If the named file does not exist, a new database file with the given name will be created automatically.


1 Answers

By far the easiest way to use SQLite with electron is with electron-builder.

First, add a postinstall step in your package.json:

"scripts": {    "postinstall": "install-app-deps"    ... } 

and then install the necessary dependencies and build:

npm install --save-dev electron-builder npm install --save sqlite3 npm run postinstall 

electron-builder will build the native module for your platform, with the correct name for the Electron binding; and you can then require it in code as normal.

See my github repo and blog post - it took me quite a while to figure this out too.

like image 67
Steve Melia Avatar answered Oct 03 '22 06:10

Steve Melia