前言:啊…node-gyp build 失败的第18次,我决定打开github的仓库,一行一行读readme.md文件。
先来解决下名词盲点,满足好奇心!!!
gyp是什么鬼?
后面会遇到个binding.gyp 的文件,这个后缀的文件很重要
英语缩写全称 gyp = Generate Your Project 构建你的项目
通过这位兄弟简短的描述中?得出的信息有二:1. 这是个构建系统 2.google家出的
https://chromium.googlesource.com/external/gyp 这个连接打开后 ?
node-gyp 是什么鬼?
node-gyp是用Node.js编写的跨平台命令行工具,用于为Node.js编译本机附加模块。它包含gyp -next项目的供应商副本,该副本 以前由Chromium团队使用,已扩展以支持Node.js本机插件的开发。
当我们需要通过jsvascript调用C++库时,nodeJS为我们提供了C++模块的编译工具–node-gyp
https://github.com/tsy77/blog/issues/5 ?
node-gyp 的github
https://github.com/nodejs/node-gyp/ ?
安装过程中参考的两个博文
随便搜的,有一半的作用
博文一: NodeJS下访问SQL Server
下载msnodesql 都很顺利,
https://github.com/Azure/node-sqlserver ?
Visual C++ 2010 - the Express edition 也安装好了,(然而没什么用)
直到 node-gyp configure
失败
失败一:
失败二:
失败三:
尝试处理的过程:
1、下载最新的node-gyp
#先卸载
npm uninstall -g node-gyp
#再安装最新版
npm install -g node-gyp@latest # 查看依赖包的版本
npm view node-gyp versions --jsony#查看当前已安装的 依赖的 版本
node-gyp --version# 安装指定版本npm install package@X.XX.X --save
2. 把64位的nodejs 换成 32位的nodejs
http://nodejs.cn/download/ ?
3、安装最新版的Visual Stuido 2019
https://visualstudio.microsoft.com/zh-hans/downloads/ ?
c++核心功能要勾上 ?
工作负载里 一定要把 “使用c++的桌面开发” 勾上, window10sdk 勾上,
有些没有勾选就安装了,可以在安装好之后,单机工具->获取工具和功能 ,重新选择并安装好
检查下python的版本
node-gyp configure 成功的样子
然后 node-gyp build 失败的样子 o(一︿一+)o (o_ _)? o(≧口≦)o
参考的博客
(五上)安装node-gyp并build——解决 “node.lib:fatal error LNK1127” 问题
这话的意思 好像是 msvs_version 这个设置项很重要, 并且每次设置完之后,最好重新安装 node-gyp !
尝试处理的过程:
1、去看看当前电脑装的 msbuild 版本 没有14.0
2、下载 visual studio 的 2015版的构建工具 -> 我要看14.0文件夹
https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=48159
有了14.0
3、 下载的 node-sqlserver 项目 下 查看npm 的配置
npm config list
修改版本为2015
npm config set msvs_version 2015 --global
重新安装node-gyp ,然后build还是失败,重复上面的步骤,仍然build失败 (ー`?ー)
思考:
1、build 报了几屏的错误,第一个错误 ,想想和别人成功build的案例步骤我的环境哪里不一样? 14.7.0 node的版本,
2、node-gyp build 报几屏错误的最后错误显示,用的2019 的 MSBuild.exe
3、我最初找到node-gyp的原因是想在nodejs环境中访问sqlServer, 参考的博文中build 之后只要 sqlserver.node 文件。
我可不可直接去网上找这个文件?ヽ(??▽?)ノ
编译成功之后,会在msnodesql文件夹的build\Release下生成一个sqlserver.node文件。
4、node-gyp configure 之后 多了visual c++ 项目
我可不可以直接用visual stuido 2010、2015、2017、2019 主动打开项目 用 visual studio 去主动build,然后拿到 sqlserver.node 文件?ヽ(??▽?)ノ
取舍 : 思路1,装低版本nodejs ?不想
思路2:卸载高版本vs2019?我花了半天下载了几个G 的工具包安装的,不想
思路3:简单,看起来很靠谱
思路4:先试试,2010版visual c++ 2010 express 编辑器 build下项目 失败
项目文件包含ToolsVersion=“14.0”。该工具集可能未知或缺失,在这种情况下,您可以通过安装适当的MSBuild版本来解决此问题,或者由于策略原因,构建可能被迫使用特定的工具版本。将项目当作它拥有ToolsVersion=“4.0”。有关更多信息,请参见http://go.microsoft.com/fwlink/?
1>C:\程序文件(x86)\MSBuild\微软。cpp \v4.0\ platform \Win32\微软。cpp. Win32. targets(511,5):错误MSB8008:指定的平台工具集(v142)没有安装或无效。请确保选择了支持的PlatformToolset值。
= = = = = = = = = =构建:0成功,1失败,最新的,0跳过= = = = = = = = = =
2019 版 visual studio 2019 编辑器build 项目 失败, 报的错和 cmd 窗口 用 node-gyp build 报的错似乎一样。
一样,一样? 这么说换成编辑器主动去build visual c++ 项目 拿 sqlserver.node 文件似乎可行。
哈… 如果思路3 直接找不到,那就选择去顺着 visual c++ 2010 express 编辑器 的脾气去装工具集好了。ヽ(??▽?)ノ
顺着思路3找node-sqlserver 64位已编译文件
资源1
https://download.csdn.net/download/zy925165472/6696159
这个时间2013年,和这个版本是不是有点太老了 ?
博文1
https://www.cnblogs.com/cyfhykx/p/6224078.html
get 另一个 node连接sqlServer 的选项 mssql ? 时间2016年
博文2
https://blog.csdn.net/qq_34893937/article/details/105142457
怀疑node-sqlserver时间太老了, 就是太老了!
啊西巴,看看这时间都是7年前和8年前,(* ̄rǒ ̄)
README.md 文档中也写明了 visual c++ express ,所以思路4真的可能性很大
但是!!! 我要放弃node-sqlserver模块了,太老,githiub上都几乎没有维护。
我要投向mssql模块,看看最新搜索到的博文日期很新 2020 年。
结论
不要心痛沉没的时间成本,留着考古。
收获了好多知识点不是~
了解别人的解决问题的思路了不是~
还收藏了个 v8的文档不是~ https://v8.whyun.com/annotated.html
还装了vs2019不是,后面可以捣鼓桌面软件了对不对~
加油!
阿西吧,好像有点说服不了自己,怎么办 ? ( ̄ε(# ̄)☆╰╮o( ̄皿 ̄///)
好的,投入 mssql的怀抱~