Node.js Windows 7上某些程序包(sqlite3,socket.io)的npm安装失败,错误为MSB8020

Node.js Windows 7上某些程序包(sqlite3,socket.io)的npm安装失败,错误为MSB8020,node.js,sqlite,visual-studio-2012,socket.io,npm,Node.js,Sqlite,Visual Studio 2012,Socket.io,Npm,在使用Visual Studio 2012(而不是2010)在我的Windows 7计算机上尝试使用npm install socket.io安装一些node.js包(特别是sqlite3和socket.io)时,我遇到了如下故障: C:\程序文件 (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(35,5): 错误MSB8020:Visual Studio 2010(平台)的生成工具 找不到工具集='v10

在使用Visual Studio 2012(而不是2010)在我的Windows 7计算机上尝试使用
npm install socket.io
安装一些node.js包(特别是sqlite3和socket.io)时,我遇到了如下故障:

C:\程序文件 (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(35,5): 错误MSB8020:Visual Studio 2010(平台)的生成工具 找不到工具集='v100')。使用v100构建 工具,单击“项目”菜单或右键单击解决方案,然后 然后选择“更新VC++项目…”。将Visual Studio 2010安装到 使用VisualStudio2010构建工具进行构建


为了在我的机器上解决这个问题,我执行了以下命令来安装软件包:

npm install socket.io--msvs\u version=2012

我在安装sqlite3出现问题时找到了答案,它也可以与socket.io一起使用

这些可能是解决问题的更持久的解决方案:

  • 安装VisualStudio2010
  • 如前所述,将npm内部副本更新为更新版本的node gyp(可能是更好的选择,尽管我没有让它工作,但没有尝试太久)

  • 另一个选项是更改配置,而不是每次指定msvs\U版本:

    npm config set msvs_version 2012
    

    我安装了Visual Studio Express 2013和Visual Studio Community 2015

    我正在
    
    C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5):错误MSB8020:找不到v140的生成工具(平台工具集='v140')。要使用v140构建工具进行构建,请安装v140构建工具。或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“升级解决方案…”,升级到当前的Visual Studio工具。[G:\work\cinema\node\u modules\engine.io\node\u modules\bufferutil\build\bufferutil.vcxproj]
    

    原因是从下载的最新Windows Node.js包含一个旧的
    npm
    v2(以及
    npm
    v2内的旧
    Node gyp

    我必须更新Node.js的内部
    npm
    (它也更新了
    Node-gyp
    ):

    现在它可以工作了(目前似乎正在使用VS2013)

    TL;博士 如果不希望
    节点gyp
    依赖于已安装的Visual Studio版本(或未安装VS),请安装
    windows构建工具
    (请参见下文)。这将消除这两个错误,并在升级已安装的Visual Studio版本时避免将来出现问题


    如果确实希望
    节点gyp
    依赖于已安装的Visual Studio版本,则
    npm config set msvs\U version 2015
    ,将您的版本标记替换为
    2015
    。有效版本标签包括:
    2015
    2014
    2013
    110
    100


    使用windows构建工具进行修复 根据,您也可以这样做

    npm安装--全局--生产windows构建工具
    来自提升的
    命令shell

    <>这将安装< C++ > VisualC++的编译工具(将用于VisualStudio进行编译),该代码将被<代码>节点GYP所要求,并适当地将 MVSSX版本 >安装到刚刚安装的版本。


    安装后,应检查由
    windows build tools
    设置的
    msvs\u版本是否未被覆盖。执行
    npm配置列表
    时,
    msvs\u版本
    应出现在
    下;globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrc
    ;如果没有,则由
    windows build tools
    设置的值已被覆盖,并且应删除被覆盖的值
    npm config delete msvs_version
    应该删除覆盖的值,并且由构建工具设置的值应该显示在全局配置部分下。

    Yep这对我来说很有用,虽然我还必须更新内部节点gyp,但在使用vs2012时,这也适用于mongojs和许多其他问题。谢谢。我浪费了数小时试图找出问题所在。在安装sqlite3时,使用VS 2015:npm install socket.io--msvs_version=2015对我也很有效。干杯非常感谢。我回来是想看看是否有人说过这些话。我厌倦了每次都添加开关。在VS2013中尝试安装contextify时,这对我很有效。我已经安装了VS 2013,所以我使用了这一点:
    npm config set msvs\u version 2013
    npm config set msvs\u version 2015有效!早些年的版本没有。我已经安装了VS 2015和Node.js 5.1.1。设置
    npm config set msvs\u version 2015
    并没有为我解决问题。我的修复方法是为npm安装找不到的路径创建符号链接(npm错误MSB4019:未找到导入的项目“C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Default.props”)。打开命令提示符并输入
    cd C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0
    ,然后输入
    mklink/d V110 V140
    (open console as an administrator)
    cd "C:\Program Files\nodejs"
    npm install npm@latest
    
    npm config set msvs_version 2013