node.js - 如何将 sqlite3 模块与 Electron 一起使用?

标签 node.js sqlite npm electron

我想使用 electron 开发桌面应用程序使用通过 npm 安装的 sqlite3 包和命令

npm install --save sqlite3

但它在 Electron 浏览器控制台中出现以下错误

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

我的开发环境是windows 8.1 x64 Node 版本 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 结合使用的最简单方法是使用 electron-builder

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

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

然后安装必要的依赖并构建:

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

electron-builder 将为您的平台构建 native 模块,并为 Electron 绑定(bind)使用正确的名称;然后你可以像往常一样在代码中require它。

见我的github repoblog post - 我也花了很长时间才弄明白。

关于node.js - 如何将 sqlite3 模块与 Electron 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32504307/

相关文章:

node.js - WordPress 和 React - 前端框架内部服务器错误

sqlite - SQLite 中的外键可以指向一个 View 吗?

java - 如何计算自记录输入以来的天数?安卓、SQLite、Java

android - 将 2 个远程数据库复制到单个 PouchDB 数据库以绕过 Android 1 数据库限制

javascript - npm init 在创建新项目时不工作

javascript - 如何用Node和Express将图像从后端发送到 View ?

javascript - 使用父类(super class)的子类中定义的静态属性

node.js - 使用流 API 跟踪推特主题标签(关键字)

node.js - 安装 Node npm v1.0.1

visual-studio - 找不到模块 'material-ui/styles/MuiThemeProvider' 的声明文件?