node ccap node-gyp 安装 问题 解决方案

前言

登录需要用到验证码。项目组的程序已经使用了ccap这个库。因此,着手进行安装。由于这个库调用了CImg这个c++模块,因此,需要调用node-gyp环境对ccap进行编译。进一步说,凡是用到node-gyp这个环境的,都会需要c++编译器,因此,可能会在安装中遇到各种问题,在此我简单说一下我遇到的问题和解决方案。(这里说的不仅仅是ccap这一个库的安装问题,这里说的是几乎所有的node-gyp的c++编译依赖问题。本文,主要还是偏向于解决win上的node-gyp编译出错的问题,linux上出错的几率小的多

问题

如果安装环境不达标的话,会报错,下边就是报错。这个出错可能是因为,没有python依赖、c++依赖等原因造成的。下边有解决方案。

node ccap node-gyp 安装 问题 解决方案_第1张图片
安装出错

解决

为了完美解决这个问题,我重新安装了操作系统,从头开始安装环境,力争将各种影响因素降到最低。于是,我在一个全新的,干净的环境下,进行了如下操作。

1.安装node(我安装的是node 8.9.4 LTS,这里不需要像网上说的安装什么32位的版本,64位的就行)
2.安装python 2.7.*(我安装的是python 2.7.14)
3.安装c++编译器,如果没有安装c++编译器,就会出现前边的那个上一节的那个错误。linux这边需要安装gcc,至于win的话,我还需要进一步说明一下:

首先,对于win系统,是不需要像网上说的那样安装visual studio 201x的,这就是说我们不需要安装一个完整的vs,只需要安装visual c++ 201x build tools就可以了,也就是只需要安装c++编译器。只安装编译器的话,加上下载,最多只需要30分钟,很快就可以解决问题,节省我们宝贵的时间。(我安装的是visual c++ 2013 build tools 地址是https://www.microsoft.com/en-us/download/confirmation.aspx?id=40760,大家安装其他的也都大同小异,最低到2005,我这边同事2017也有编译过去的,推荐2013或者2015)

如果是win,还需要设置一下msvs的环境,执行npm config set msvs_version 2013 -g,这样,以后node-gyp都会调用这个c++编译器来编译node下的c++模块了。

set VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
npm config set msvs_version 2015 --global
npm install --msvs_version=2015
node ccap node-gyp 安装 问题 解决方案_第2张图片
node ccap 安装 问题 解决方案

其他问题

我看了看网上说的其他问题,在这里总结一下:

问题 解决
MSBUILD : error MSB6006: “VCBuild.exe”已退出,代码为 -1。[C:\Users\pc\AppData\Roamingnpm\node_modules\ccap\build\binding.sln] 这个问题是制定了错误的VC编译器,我猜测可能是安装了多个VS环境造成的。我解决这个问题,是通过将全部的VS都删除之后,单独只安装VC++编译器的方式解决问题的,另外,还要将msvs的环境设置一下
CL.exe找不到 这个问题是你的安装包中的CL.exe依赖出现了问题,或者说,你在安装vs的过程中出错了,或者是你的操作系统本身就有问题,已经缺少了必要的文件。解决这个问题,最快捷的方法是手工将程序覆盖一遍,如果不行,请删除vs重新安装,并确保安装过程不出问题。

除此之外,还有ms资源找不到的,大概都可以通过重新安装msvs来解决。实在不行,就从新做个环境(虚拟机),然后,按照正确的步骤安装依赖就好了。

stack Error: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe failed with exit code: 1

有的时候,还需要以管理员身份运行cmd,然后执行下方的命令,安装工具

# before installing node-gyp on windows
npm install --global --production windows-build-tools
 
# install node-gyp globally
npm install -g node-gyp

你可能感兴趣的:(node ccap node-gyp 安装 问题 解决方案)