因为node-webkit与nodejs的ABI不同,所以直接npm install sqlite3,在node-webkit上是不行的。需要将sqlite3重新编译为你所需要的版本。
之前,我在《 windows上node-webkit安装sqlite、socket的那些坑》已经讲过windows上环境的搭配,接下来我继续说下,如何重新编译sqlite。
方案A
npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=ia32 --target=$(NODE_WEBKIT_VERSION)
其中注意:target_arch 如果你的node-webkit是64位的,这里就要改为x64这是sqlite3官网提到的方案,如果你能成功,那后面就不用看了。 不过很可惜,我试了好多次,都失败了。
target 为node-webkit的版本号,与你自己的node-webkit版本保持一致就行,目前最新的是0.13.0
方案B
先checkout最新的sqlite3npm install sqlite3
然后进入sqlite3的目录,继续输入(假设node-webkit版本是v0.10.4)
npm install --build-from-source --runtime=node-webkit --target_arch=x64 --target=0.12.3
成功后,会在sqlite3\lib\binding目录下生成文件夹node-webkit-v0.12.3-win32-x64。这样就安装成功了,我最开始就是用的这种方法。不过后来过了段时间,按照方案B我又死活编不过,怎么都找不到原因。只好又换了种方案C。
方案C
方案C跟方案B其实没什么区别,不同的在于不要用npm的方式checkout最新的版本,应该直接去官网上下载最新的ZIP包,解压后,命令行进入sqlite3的目录,跟方案B一样输入 npm install --build-from-source --runtime=node-webkit --target_arch=x64 --target=0.12.3方案C其实sqlite的官网上就有说明,不过是写在方案A的后面,一开始我也没太注意(难道不都是把最好的方案写在前面吗?)。后来实在没办法了,才只好试了试,结果竟然真的成功了!我自己其实也不知道该说什么了。。。
另外,如果你的电脑是64位的,想要编译成32位的,需要切换Windows 7.1 SDK的编译环境。好了,这篇就到这里了。