当前位置: 代码迷 >> 综合 >> window10 64系统中node-gyp的环境配置,为了在nodejs环境下访问sqlserver而用node-gyp,从热情到放弃系列
  详细解决方案

window10 64系统中node-gyp的环境配置,为了在nodejs环境下访问sqlserver而用node-gyp,从热情到放弃系列

热度:81   发布时间:2024-02-08 18:30:02.0

前言:啊…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的怀抱~

  相关解决方案