tutorial nwjs nodejs node instal and node.js sqlite3 sqlite npm electron

node.js - nwjs - ¿Cómo utilizar el módulo sqlite3 con electrón?



nwjs sqlite3 (8)

Quiero desarrollar una aplicación de escritorio usando electron que use el paquete sqlite3 instalado a través de npm con el comando

npm install --save sqlite3

pero da el siguiente error en la consola del navegador de electrones

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

Mi entorno de desarrollo es Windows 8.1 x64 nodo versión 12.7

mi archivo package.json se ve así:

{ "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" } }

archivo index.js

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; }); });

archivo my.js

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();

archivo index.html

<!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>



Con mucho, la forma más fácil de usar SQLite con electron es con electron-builder .

Primero, agregue un paso posterior a la instalación en su package.json:

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

y luego instale las dependencias necesarias y compile:

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

electron-builder construirá el módulo nativo para su plataforma, con el nombre correcto para el enlace Electron; y luego puede require en el código normalmente.

Vea mi repositorio de github y la publicación del blog : también me llevó bastante tiempo resolver esto.


Echa un vistazo a una respuesta similar here

TL; DR

cd ./node_modules/sqlite3 npm install nan --save npm run prepublish node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64 node-gyp rebuild --target=1.3.2 --arch=x64 --target_platform=win32 --dist-url=http://electron.atom.io/ --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64


Estaba teniendo el mismo problema Intenté todo y finalmente esto funcionó para mí:

npm install --save sqlite3 npm install --save electron-rebuild npm install --save electron-prebuilt ./node_modules/.bin/electron-rebuild.cmd

Esto creará la carpeta "electron-v1.3-win32-x64" en. / Node_modules / sqlite3 / lib / binding / location que es utilizada por electron para usar sqlite3.

Simplemente inicie la aplicación y podrá utilizar sqlite3 ahora.


Funciona para mí en las versiones 3 y 4, desafortunadamente NO en la versión 5. Consulte la documentación de sqlite3 para obtener más detalles: https://www.npmjs.com/package/sqlite3#custom-builds-and-electron o ejecute la siguiente línea: npm install sqlite3 --runtime=electron --target=4.0.0 --dist-url=https://atom.io/download/electron


Me encuentro con este error también. Así es como lo npm install --save-dev electron-rebuild : npm install --save-dev electron-rebuild luego: ./node_modules/.bin/electron-rebuild

de: https://electronjs.org/docs/tutorial/using-native-node-modules

pd: Mientras está en reconstrucción, no uses npm start para lanzar la aplicación de electrones. De lo contrario, el proceso de reconstrucción fallaría.


No recomendaría el módulo de nodo nativo sqlite3. Requiere ser reconstruido para trabajar con electrones. Es una tarea enorme: al menos nunca puedo hacer que funcione y no hay instrucciones para reconstruir módulos en Windows.

En cambio, eche un vistazo al módulo ''sql.js'' de kripken que es sqlite3 que se ha compilado al 100% en JavaScript. https://github.com/kripken/sql.js/


Una solución más simple:

  1. Instalar electron-rebuild npm i electron-rebuild --save-dev
  2. Inicie electron-rebuild ./node_modules/.bin/electron-rebuild (o ./node_modules/.bin/electron-rebuild.cmd en Windows)
  3. Vaya a " node_modules / sqlite3 / lib / binding / " y cambie el nombre de la carpeta " electron-v0.36-darwin-x64 " a " node- v47 -darwin-x64 "

PD: v47 es mi versión, tenga cuidado de elegir la buena (en su caso v45 )