node-webkit中使用sqlite3(含编译教程)

sqlite3的官方文档提到:nodejs和node-webkit的ABI不同,所以通过npm install sqlite3下载的sqlite3是无法使用的,需要重新编译。

windows编译: 以LTS版本(0.14.7)为例

一、所需编译环境

  1. 安装Python 2.7.14(不支持3.x版本)并设置好环境变量,下载地址:https://www.python.org/downloads/
  2. 安装最新的nodejs+npm 下载地址:https://nodejs.org/en/
  3. 安装VC++编译器VS2015,下载地址:http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso(VS2015中有v140的工具集,编译sqlite3需要用到。安装时勾选相关C++模块,安装教程:https://jingyan.baidu.com/article/4dc40848e4709889d846f122.html,要安装很久,一般几个小时)

二、安装相关插件

通过cmd命令安装相关插件,最好用管理员权限启动cmd

  1. 安装windows-build-tools
npm install --global --production windows-build-tools
  1. 安装node-gyp
npm install -g node-gyp
  1. 安装nw-gyp
npm install nw-gyp -g
  1. 安装node-pre-gyp
npm install node-pre-gyp -g
  1. 在nw官网中(http://nwjs.net/doc/user/Advanced/Use-Native-Node-Modules.html)下载win_delay_load_hook.cc,然后替换node-gyp模块中的win_delay_load_hook.cc

在 Windows, 在使用 node-gypnpm安装原生模块之前,您需要用 这个文件 替换系统中的 <npm-path>\node_modules\node-gyp\src\win_delay_load_hook.cc</npm-path>,仅在您使用相同版本和架构的Node.js和nw.js.s才有效.

  1. 切换到你的项目路径,下载 4.0.3版本sqlite3,本人用了最新版本5.0.0会编译出错
npm install sqlite3@4.0.3 --save

三、编译

切换到你项目中的sqlite3目录下,根据系统位数及node-webkit位数执行对应的命令

–target: node-webkit版本
–target_arch: node-webkit位数
–target_platform: 操作系统位数

  1. win32+64位
node-pre-gyp rebuild --runtime=node-webkit --target=0.14.7 --target_arch=x64 --target_platform=win32

node-webkit中使用sqlite3(含编译教程)
node-webkit中使用sqlite3(含编译教程)
2. win32+32位
node-pre-gyp rebuild --runtime=node-webkit --target=0.14.7 --target_arch=ia32 --target_platform=win32
  1. win64+64位
node-pre-gyp rebuild --runtime=node-webkit --target=0.14.7 --target_arch=x64 --target_platform=win64
  1. win64+32位
node-pre-gyp rebuild --runtime=node-webkit --target=0.14.7 --target_arch=ia32 --target_platform=win64

四、测试

打开node-webkit控制台,执行测试代码,运行成功!

node-webkit中使用sqlite3(含编译教程)

测试代码如下:

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

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();

五、其他

在执行测试代码时,报了一个错误:

node-webkit中使用sqlite3(含编译教程)

命令行cd到项目中的sqlite3目录下,执行命令安装node-pre-gyp即可

npm install node-pre-gyp

Original: https://blog.csdn.net/carfge/article/details/115230594
Author: carfge
Title: node-webkit中使用sqlite3(含编译教程)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817377/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球