热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[置顶]windows上node-webkit安装sqlite、socket的那些坑

最近用node-webkit开发一个js打包软件workCloud。最开始,用的是mysql,后来打算增加个本地项目打包功能,于是改用了sqlite。其中的血泪,唉,一言难尽呐。。。不

最近用node-webkit开发一个js打包软件workCloud。最开始,用的是mysql,后来打算增加个本地项目打包功能,于是改用了sqlite。其中的血泪,唉,一言难尽呐。。。

不得不说,windows上配置开发环境实在是有够坑的。很多时候还查不到准确的解决方案。因为windows版本多、补丁多,导致对应的解决方案也多。有时候为了解决问题,不得不一个个去尝试,甚至将所有软件卸载,重新安装新的版本。。。

好了,废话不多说,其中的辛酸且听在下一一道来。

1. 蛋疼的sqlite + node-webkit

按照惯例,直接npm install sqlite3,然后运行nw。结果,竟然报错了。

Uncaught Error: The dialect sqlite is not supported. Supported dialects: mariadb, mssql, mysql, postgres, and sqlite. (Error: Please install sqlite3 package manually)

虾米情况,不是刚刚装了sqlite吗?因为在下用sequelize来操作数据,而且这个错也是sequelize报的,所以最开始把问题定位到了sequelize这个js框架上了。结果谷歌了半天,丝毫没找到解决的办法。

后来,干脆一脚踹开sequelize,直接自己来。首先在控制栏尝试输入require('sqlite3'),得到了以下的错误:

Error {code: "MODULE_NOT_FOUND", stack: (...), message: "Cannot find module 'D:\doSomething\workCloud\node_…\node-webkit-v0.12.3-win32-x64\node_sqlite3.node'"}

为什么会找不到sqlite模块呢?这不应该啊,以前都这么搞都没问题,这次咋就害羞了呢?

后来一拍脑袋,会不会是node-webkit造成的呢?这么一查,果然网上有很多跟我同病相怜的病号啊!而且都是老外,看来这也算是富贵病了!

后来在sqlite的github上找到了这样一句话

Because of ABI differences, sqlite3 must be built in a custom to be
used with node-webkit.

好吧,看来还真不怪人家!人家都已经说了因为ABI的不同,需要自己重新编译。哈哈,终于找到解决方案了,总算皇天不负有心人!看来,也没什么麻烦的嘛,分分钟搞定!(此时在下还沉浸在一片舒爽中,丝毫没有预见后面即将到来的灾难。。。)

按照官方给出的步骤进行安装:
To build node-sqlite3 for node-webkit:

  1. Install nw-gyp globally: npm install nw-gyp -g (unless already
    installed)
  2. Build the module with the custom flags of –runtime, –target_arch,
    and –target:
    NODE_WEBKIT_VERSION="0.8.6" # see latest version at https://github.com/rogerwang/node-webkit#downlo
    npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=ia32 --target=$(NODE_WEBKIT_VERSION)

第一步安装nw-gyp,这个成功了。结果运行第二步,又失败了。提示python不存在。

2.安装python
我安装的是python2.7,安装好后需要设置下:

npm config set python /Python27/python.exe --global

安装好python,再安装sqlite,结果又报错了。提示缺少”VCBuild.exe”。

MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,

安装 .NET Fram ework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了 其他位置,请将其位置添加到系统 路径中。

对于这个问题,在下真是感到崩溃了。以前安装socket.io也遇到过这个问题,半天都没搞好。最后请教安装过的同事,结果人家得意地来了句“我是在linux上安装的…”

我当时重装系统的心都有了!可是随后公司的IT部门8000发话了,公司电脑不能安装linux系统。。。好吧,我还是老老实实安装VC++吧!尼玛,这得几个G吧!这么多版本,到底选哪个呢?好吧,最新的应该是最好的,visual studio 2015,就它了!

3、史上巨坑的VC++
一下午的时间,终于下完了2015,安装又花了好久。结果,还是报错。

在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(297,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.
TargetFrameworkVersion or PlatformToolset may be set to an invalid version number. [C:\Users\Jason.yang\AppData\Roaming\npm\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj]
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.targets(152,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515。 [C:\Users\Jason.yang\AppData\Roaming\npm\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:269:23)
gyp ERR! stack at ChildProcess.emit (events.js:110:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:1074
:12)

这尼妹的,还要不要人活了!后来整天半天,实在搞不定,在网上看到一片文章Fix ‘node-gyp rebuild’ error on windows 只好抱着试试看的想法,重新下载了Visual C++ 2010 Express

最后总算有情人终成眷属,2015不行,换2010,反正都是一家兄弟,肥水不流外人田嘛!呃,我是不是说错什么了。。。

好了,吐槽了这么多,我总结下:
1、安装phyon,安装后设置

npm config set python /Python27/python.exe --global

2、安装Visual C++ 2010 Express另外安装好后,需要强制指定版本

npm config set msvs_version 2010 --global

3、Windows SDK 7.1
4、Visual Studio 2010 SP1
5、Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1
6、安装nw-gyp、node-pre-gyp

如果还是不行,最后记得用Windows SDK 7.1 自带的命令行工具试试,即:Start -> All Programs -> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Command Prompt

好了,差不多就这些了。当然,这仅仅是安装,至于编译成功,看来我又得吐槽一篇文章了。。。


推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
author-avatar
风云a899
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有