Node.js Windows 7上某些程序包(sqlite3,socket.io)的npm安装失败,错误为MSB8020
在使用Visual Studio 2012(而不是2010)在我的Windows 7计算机上尝试使用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
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一起使用
这些可能是解决问题的更持久的解决方案:
另一个选项是更改配置,而不是每次指定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所要求,并适当地将安装后,应检查由
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