如何使用电子sqlite3模块?

我想开发使用电子的桌面应用程序,该命令使用通过npm安装的sqlite3软件包

npm install --save sqlite3 

但在电子浏览器控制台中会出现以下错误

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

我的开发环境是Windows 8.1 x64节点版本12.7

我的package.json文件如下所示:

 { "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文件

 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文件

 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文件

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

到目前为止,使用SQLite和电子最简单的方法是使用electron-builder

首先,在你的package.json中添加一个postinstall步骤:

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

然后安装必要的依赖关系并构build:

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

电子构build器将为您的平台构build本地模块,同时为电子绑定创build正确的名称; 然后你可以像平常那样在代码中require它。

看到我的github回购和博客文章 – 我花了相当长的一段时间才弄清楚这一点。

我不会推荐本地节点sqlite3模块。 它需要重build与电子一起工作。 这是一个巨大的痛苦 – 至less我永远不能得到它的工作,他们没有指示重build模块在Windows上。

而是看看kripken的“sql.js”模块是sqlite3,它已经在JavaScript中编译了100%。 https://github.com/kripken/sql.js/

这里要考虑两个方面:

  1. 设置NODE_PATH :这让电子知道在哪里可以find你的模块(详细解释见这个答案 )
  2. 根据电子标题编译本地模块:查看官方文档

并检查以下问题,问同样的事情:

  • 电子应用程序与数据库
  • 在Elelectron中使用NodeJS插件

我的build议是给爱情 (谷歌)一试。

更简单的解决scheme:

  1. 安装电子重buildnpm i electron-rebuild --save-dev
  2. 在Windows上启动electron-rebuild ./node_modules/.bin/electron-rebuild (或.\node_modules\.bin\electron-rebuild.cmd
  3. 转到“ node_modules / sqlite3 / lib / binding / ”并将文件夹“ electron-v0.36-darwin-x64 ”重命名为“ node- v47 -darwin-x64

PS: v47是我的版本,要小心select好的(在你的情况v45

我有同样的问题。 尝试了一切,最后这对我工作: –

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

这将在电子使用sqlite3的。\ node_modules \ sqlite3 \ lib \ binding \ location中创build“electron-v1.3-win32-x64”文件夹。

只需启动应用程序,你现在就可以使用sqlite3了。

在这里看看类似的答案

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 
 npm install sqlite3 npm install --save sql.js 

文件夹结构应该像

要使用名为“test123”的单个表创build一个名为“db”的新SQLite数据库,您可以这样做:

 SQLite version 3.11.0 2016-02-15 17:29:24 Enter ".help" for usage hints. sqlite> create table test123(id int,fname varchar(20), lname varchar(20)); sqlite> insert into test123 values(1,'lalit','tyagi'); sqlite> insert into test123 values(2,'vineet','tyagi'); sqlite> insert into test123 values(3,'nihal','jumhare'); sqlite> insert into test123 values(4,'mandip','gothadiya'); sqlite> insert into test123 values(5,'jaggu','mohan'); sqlite> select *from test123; 1|lalit|tyagi 2|vineet|tyagi 3|nihal|jumhare 4|mandip|gothadiya 5|jaggu|mohan sqlite> 

产量