连接到sqlite3数据库时出错

时间:2016-12-23 21:02:21

标签: node.js sqlite electron

连接到sqlite3数据库时出错。

这是我的代码

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

db.serialize(function(){

    dbb.run("create table user (id int, db text)");
    var stmt = db.prepare("insert into user values(?,?)");
    for(var i=0; i<10; i++){

        var d = new Date();
        var n = d.toLocateTimeString();
        stmt.run(i,n);

    }   
    stmt.finalize();

    db.each("select id, dt from user",function(err,row){
        console.log("user id:"+row.id,row.dt);
    });
});
db.close();

错误是:

  

未捕获错误:找不到模块'path_to_project \ node_modules \ sqlite3 \ lib \ binding \ electron-v1.4-win32-ia32 \ node_sqlite3.node'

当我签入此文件夹node_modules\sqlite3\lib\binding时,它有一个文件夹和node-v48-win32-ia32\node_sqlite3.node而不是electron-v1.4-win32-ia32\node_sqlite3.node的文件。

有人建议我将文件夹名称node-v48-win32-ia32更改为electron-v1.4-win32-ia32。然后它会工作。但它返回另一个错误

  

ELECTRON_ASAR.js:173未捕获错误:系统无法在%2的消息文件中找到消息号0x%1的消息文本。   \?\ path_to_project \ node_modules \ sqlite3的\ lib中\结合\电子V1.4-Win32的IA32 \ node_sqlite3.node

有人可以为此建议解决方案吗?我搜索了很多,但找不到这个解决方案。

2 个答案:

答案 0 :(得分:3)

我通过使用电子重建来实现这一点

首先安装:

npm install --save-dev electron-rebuild npm install --save-dev electron-prebuilt

然后,在package.json添加脚本:

"rebuild": "electron-rebuild -f -w sqlite3 -v 1.X"

并运行

npm run rebuild

我不得不多次运行它,将-v更改为所需的版本,1.2,1.4或1.6

答案 1 :(得分:1)

就像Victor Ivens上面所说,

npm install --save-dev electron-rebuild

然后,在你的package.json中添加脚本:

"rebuild": "electron-rebuild -f -w sqlite3 -v 1.7" // for version 1.7

瞧,它有效。 你可以忽略预建的