电子应用程序无法找到sqlite3模块

rak*_*btg 12 sqlite node.js npm electron

在我的电子应用程序中,我已经通过npm安装了sqlite3

npm install sqlite3
Run Code Online (Sandbox Code Playgroud)

但是一旦我尝试与数据库交互它无法找到数据库,这里是日志:

未捕获错误:找不到模块'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();
Run Code Online (Sandbox Code Playgroud)

我也试着这样:

npm install sqlite3 --build-from-source
Run Code Online (Sandbox Code Playgroud)

但它无法安装!

另外,我使用的是Python3.如何安装模块以使用电子?

小智 32

首先:

npm install electron-rebuild

然后尝试几次:

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


Adi*_*Adi 9

您必须使用基于电子的配置构建此本机模块.

尝试:
1.2 cd node_modules/sqlite3
. 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

这假设您拥有最新版本的电子.您可以更改配置以匹配您的电子版本.

  • 我最终得到了错误 `npm ERR!缺少脚本:预发布` (2认同)

Sha*_*baz 6

如果这些都不起作用,试试这个。

npm install electron-builder
Run Code Online (Sandbox Code Playgroud)

将此添加到 package.json 文件的脚本标记中

 "postinstall": "electron-builder install-app-deps"
Run Code Online (Sandbox Code Playgroud)

然后执行这个

npm run postinstall 
Run Code Online (Sandbox Code Playgroud)

这节省了我很多时间