node-webkit中使用sqlite3(MAC平台)
前言
最近使用node-webkit开发一款博客发布软件,来替换难用的Windows Live Writer(主要是对Markdown标签的支持很差劲)。为了解决博文信息临时保存的问题,想到了使用sqlite这个小型的数据库。折腾的过程中遇到不少问题,这里做个记录方便以后查阅。
安装Sqlite3模块
参考sqlite3的官方文档说明,使用npm install sqlite3安装sqlite3。
使用node-webkit测试官方给出的一段代码:
<script type="text/javascript">var sqlite3 = require('sqlite3').verbose();var db = new sqlite3.Database('data.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(); </script>
执行以上代码会报如下错误:
Uncaught Error: Cannot find module './binding/Release/node-v11-darwin-ia32/node_sqlite3.node'
这是因为我是用的node-webkit是32位的,而使用npm安装的sqlite3模块是针对node.js的64位版本,如下图所示:
看了下sqlite3的官方文档,文档中提到,nodejs和node-webkit的ABI不同,需要针对node-webkit重新编译sqlite3。
重新编译针对node-webkit的sqlite3模块
这个过程还是参考的sqlite3的官方资料,不过过程中遇到不少问题。
这里直接给出正确的编译步骤:
1. 没有安装nw-gyp的话,全局安装之:sudo npm install nw-gyp -g (nw-gyp可以用来编译针对node-webkit的C++ add on模块,因为node-sqlite3有部分代码是用C语言编写的,所以需要针对不同平台进行单独编译)
2. cd到sqlite3的安装目录(node_modules/sqlite3),执行重新编译命令:nw-gyp rebuild --target=0.8.4 --arch=ia32 (target参数是node-webkit的版本,根据自己使用的node-webkit版本号自行修改,arch参数是node-webkit的架构信息,我用的是mac 32位的node-webkit,所以必须指定为ia32)
3. 将编译的node_sqlite3.node(在node_modules/sqlite3/build/Release目录下)放到合适的目录:node_modules/sqlite3/lib/binding/Release/node-v11-darwin-ia32 (node-v11-darwin-ia32默认是不存在的,需要手动创建)
再次测试官方给出的代码
再次执行后控制台输出结果如下(可以看到select语句的查询结果输出,表明可以正常使用了):
转载于:https://www.cnblogs.com/jasondan/p/3500965.html
node-webkit中使用sqlite3(MAC平台)相关推荐
- Appnium安装-Mac平台
Appium的安装-MAC平台 其实Appium的安装方式主要有两种: 1)自己安装配置nodejs的环境,然后通过npm进行appium的安装 2)直接下载官网提供的dmg进行安装,dmg里面已经有 ...
- 如何在Node.js中获取本机本地IP地址
最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...
- 消息队列Rabbitmq,在Node.js中的应用
为什么写这篇文章 现在的面试要求越来越高了,打开看了看几个 BOSS 招聘 Node.js 全栈开发的,其中都有一条"了解 消息队列,并在项目中应用过",呜呜呜 后端开发者应该都知 ...
- 在Docker中运行EOS(MAC版)
在Docker中运行EOS(MAC版) 在Docker中也可以简单快速的构建EOS.IO.笔者在Mac平台下参考官方文档躺了一次河.记录如下: 安装依赖 Docker 版本 17.05或者更高 tes ...
- 关于nwjs中编译sqlite3的记录
如果要在nwjs中使用sqlite3,则安装sqlite3之后需要手动编辑sqlite3后才能使用,总结如下: 1.编译sqlite3的时候,当前环境的node版本NODE_MODULE_VERSIO ...
- 在Mac平台使用GitHub和Hexo搭建博客
欢迎参与讨论,转载请注明出处. 本文转载自https://musoucrow.github.io/2017/02/26/build_bolg/ 前言 在整这个博客时遇到了不少坑,正适合作为此博客的第一 ...
- node/js 漏洞_6个可用于检查Node.js中漏洞的工具
node/js 漏洞 Vulnerabilities can exist in all products. The larger your software grows, the greater th ...
- node mongoose_如何使用Express,Mongoose和Socket.io在Node.js中构建实时聊天应用程序
node mongoose by Arun Mathew Kurian 通过阿伦·马修·库里安(Arun Mathew Kurian) 如何使用Express,Mongoose和Socket.io在N ...
- 在node.js中一次读取一行文件?
本文翻译自:Read a file one line at a time in node.js? I am trying to read a large file one line at a time ...
- 如何在Node.js中退出
用于退出的命令是什么? (即终止Node.js进程) #1楼 从命令行, .exit就是你想要的: $ node > .exit $ 它在REPL文档中有记录 . REPL(Read-Eval- ...
最新文章
- 面试:HashMap 夺命二十一问!鸡哥都扛不住~
- 在Ubuntu17.04中遇到无法清空回收站解决方法
- numpy.random.normal详解
- redis的安装及springDataRedis
- 向量合并 matlab,MATLAB追加向量
- 从拿到班车手册.xls到搜索附近班车地点
- pandas 替换 某列大于_Pandas使用总结
- 软件工程导论 08章软件维护
- keil spi 调试_单片机软件出问题了?有经验的工程师这么调试
- Pycharm中如何pip下载包更快
- 关于DynamipsGUI
- 马士兵java学习之路
- Python自学笔记11:实操案例八(咖啡馆、2019中超联赛前五,模拟手机通讯录)
- 对接钉钉API语音功能相关文档
- 共轭复数,共轭根式,共轭矩阵,共轭方向,共轭方向法,共轭梯度法,共轭分布,共轭函数,傅里叶变换的共轭对称
- 有没有ai绘画教程?什么软件能实现ai绘画?
- 数据技术-分析报告如何写
- 付费专栏-付费课程-【购买须知】
- 《进击的巨人》展现了日本羸弱的二次元文化
- 新动力计算机学校怎么样,东莞新动力Dj学校怎么样
热门文章
- 深度学习入门者选择开源框架丨硬创公开课群友问答
- Swift - 设置应用程序图标的提醒个数(右上角小红圈)
- (剑指Offer)面试题58:二叉树的下一个结点
- 【Android开发】高级组件-选项卡
- linux之使用cron,logrotate管理日志文件
- nginx 编译安装,服务查看启停,以及模块的追加编译
- Normalize.css – 现代 Web 开发必备的 CSS resets
- 如何删除档案中的重复的行
- 在Windows上删除所有的Oracle安装 和电脑名改变后的设置...
- B站游戏大佬飘了?深挖B站辱北邮事件经过:不是第一次