man*_*nas 73 sqlite node.js npm electron
我想使用电子开发桌面应用程序,该电子使用通过npm通过命令安装的sqlite3软件包
npm install --save sqlite3
Run Code Online (Sandbox Code Playgroud)
但它在电子浏览器控制台中出现以下错误
Uncaught Error: Cannot find module 'E:\allcode\eapp\node_modules\sqlite3\lib\binding\node-v45-win32-x64\node_sqlite3.node'
Run Code Online (Sandbox Code Playgroud)
我的开发环境是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"
}
}
Run Code Online (Sandbox Code Playgroud)
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;
});
});
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
小智 104
到目前为止,使用SQLite和电子的最简单方法是electron-builder.
首先,在package.json中添加一个postinstall步骤:
"scripts": {
"postinstall": "install-app-deps"
...
}
Run Code Online (Sandbox Code Playgroud)
然后安装必要的依赖项并构建:
npm install --save-dev electron-builder
npm install --save sqlite3
npm run postinstall
Run Code Online (Sandbox Code Playgroud)
电子建设者将为您的平台构建本机模块,具有正确的Electron绑定名称; 你可以require像往常一样在代码中使用它.
看看我的github回购和博客文章 - 我花了很长时间来弄清楚这一点.
Jou*_*ien 17
我不推荐使用本机节点sqlite3模块.它需要重建才能使用电子.这是一个巨大的痛苦 - 至少我永远无法让它工作,他们没有指示在Windows上重建模块.
而是看看kripken的'sql.js'模块,它是在JavaScript中100%编译的sqlite3. https://github.com/kripken/sql.js/
我遇到了同样的问题.尝试了一切,并且这对我有用: -
npm install --save sqlite3
npm install --save electron-rebuild
npm install --save electron-prebuilt
.\node_modules\.bin\electron-rebuild.cmd
Run Code Online (Sandbox Code Playgroud)
这将在.\node_modules\sqlite3\lib\binding\location中创建"electron-v1.3-win32-x64"文件夹,电子使用该文件夹来使用sqlite3.
只需启动应用程序,您就可以立即使用sqlite3了.
更简单的解决方案:
npm i electron-rebuild --save-dev./node_modules/.bin/electron-rebuild(或.\node_modules\.bin\electron-rebuild.cmd在窗口上)PS:v47是我的版本,小心选择好的(在你的情况下是v45)
它适用于版本 3 和 4,不幸的是版本 5 不适用。有关详细信息,请参阅 sqlite3 文档:https://www.npmjs.com/package/sqlite3#custom-builds-and-electron或运行以下行:npm install sqlite3 --runtime=electron --target=4.0.0 --dist-url=https://atom.io/download/electron
npm install --save sqlite3
npm install --save-dev electron-rebuild
Run Code Online (Sandbox Code Playgroud)
然后,在 package.json 的脚本中,添加以下行:
"scripts": {
"postinstall": "electron-rebuild",
...
},
Run Code Online (Sandbox Code Playgroud)
然后只需重新安装即可触发安装后:
npm install
Run Code Online (Sandbox Code Playgroud)
在一个复杂的用例中对我来说完美无缺,还涉及电子构建器、电子网络包和续集。
它适用于 electron-webpack 的开发模式和 Windows 和 Linux 的生产模式。
| 归档时间: |
|
| 查看次数: |
65912 次 |
| 最近记录: |