无法在Windows 7 x64 / VS2012上安装需要编译的节点模块


192

我无法安装任何需要编译的模块。它们全部失败,并出现以下错误:

MSBUILD : error MSB3411: Could not load the Visual C++ component "VCBuild.exe". ...

我的环境:

  • Windows 7 Enterprise x64版本6.1.7601
  • 节点x86 0.8.16
  • npm 1.2.0
  • 节点gyp 0.8.2
  • Visual Studio 2012和众多软件包

相关环境变量:

Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShel l\v1.0;C:\Program Files\TortoiseGit\bin;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\tools;c:\tools\node

没有INCLUDE,LIB,LIBPATH等。

我对该问题进行了简短的调查,发现通过以下设置,手动克隆的git://github.com/einaros/ws.git的手动编译(直接调用VCBuild.exe和msbuild.exe)成功完成:

SET Configuration=Release
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcpackages
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin;%PATH%
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Common7\IDE;%PATH%
SET PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
SET PATH=%SystemRoot%\system32;%PATH%

SET INCLUDE=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\include
SET INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%

SET LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib
SET LIB=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\lib;%LIB%

SET MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"

VCBuild.exe C:\Tools\node\ws\build\bufferutil.vcproj "Release|Win32" /useenv
VCBuild.exe C:\Tools\node\ws\build\validation.vcproj "Release|Win32" /useenv
%MSBUILD% build/binding.sln /verbosity:diagnostic /nologo /p:Configuration=Release;Platform=Win32

我试图用相同的变量调用node-gyp,但失败了:

C:\!> git clone https://github.com/einaros/ws.git
C:\!> cd ws
C:\!\ws>node-gyp configure
...
C:\!\ws>node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@0.8.2
gyp info using node@0.8.16 | win32 | ia32
gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=Win32' ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
C:\Users\User\.node-gyp\0.8.16\deps\uv\include\uv.h(55): fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory [C:\!\
ws\build\binding.sln]
C:\Users\User\.node-gyp\0.8.16\deps\uv\include\uv.h(55): fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory [C:\!\
ws\build\binding.sln]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (c:\Tools\node\node_modules\node-gyp\lib\build.js:255:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:99:17)
gyp ERR! stack     at Process._handle.onexit (child_process.js:678:10)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "c:\\Tools\\node\\\\node.exe" "c:\\Tools\\node\\node_modules\\node-gyp\\bin\\node-gyp.js" "build"
gyp ERR! cwd C:\!\ws
gyp ERR! node -v v0.8.16
gyp ERR! node-gyp -v v0.8.2
gyp ERR! not ok

也许您对此有一些想法?

谢谢。


您是否尝试运行vcvarsall.bat而不是尝试手动设置环境?
JohnnyHK 2013年

没有成功 仍然是“ MSB3411:无法加载Visual C ++组件“ VCBuild.exe”。
Alex Netkachov 2013年

顺便说一句,使用“ C:\ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd”,我得到了更好的结果:致命错误C1083:无法打开包含文件:'stdint.h':没有此类文件或目录
Alex Netkachov 2013年

2
我终于安装了bcrypt,它需要在win7 64位环境上构建,要进行排序一直很麻烦。对于我的情况,我遵循有关bcrypt和node-gyp的说明。对我来说,关键在于安装Microsoft Windows 7 SDK和.Net 4框架。一旦安装完成(并重新启动了外壳程序),我发现可以通过bcrypt的安装来编译所有内容。所以我只是想知道您是否安装了SDK?我问,因为您没有在清单中提及它。
Metalskin

1
这发布于2015-11-19,它工作!(对此线程有很多好的建议,但并不高兴)github.com/nodejs/node-gyp/issues/629#issuecomment-158163655该过程将安装Build Tools 2015,而不是VS2012。
dkloke

Answers:


148

尝试-将全局设置:

npm config set msvs_version 2012 --global

1
完善!解决了我所有的问题!
hansmei 2015年

2
太好了,我在运行一组在肠深处调用npm的脚本时遇到了错误。我不想修改脚本,所以这对我来说是最好的选择
Alastair

2
这应该是推荐的答案,在Windows 10上像魅惑一样工作
William

2
不起作用 error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
格林

在仅具有VS2017的Windows 10 PC上-我使用VS2017安装程序还安装了2015 VC构建工具。然后torazaburo的修复成功了:)实际上catalint的回答在下面看起来更好,但是我还没有尝试过....
Sean

143

要在没有安装VS2010的情况下(仅限2012年)执行此操作,请设置msvs_version标志:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

按照@Jacob的评论

npm install --msvs_version=2013 如果您拥有2013版


3
尽管我相信第二个命令的参数也应该有两个连字符-我为此添加了两个连字符,并且它起作用了。这使我克服了我的npm安装错误-谢谢!
Dullroar,2013年

1
@Dullroar superuser.com/questions/372203/...它为我工作有1个破折号耸肩
亚历

谢谢你 该npm install命令得到它为我工作。一点破折号对我也起作用。
Seiyria 2014年

应该是--msvs-version = 2012
RaduM 2014年

这与我的Windows 7 x64安装效果惊人!谢谢微软(被人嘲笑)!
Blairg23

60

更新v3:https//www.npmjs.com/package/windows-build-tools

npm install --global Windows-build-tools

下载并安装Microsoft免费提供的Visual C ++ Build Tools 2015。这些工具是编译流行的本机模块所必需的。它还将安装Python 2.7,并适当配置您的计算机和npm。

更新v2:

node-gyp更新了其自述文件,以包括针对Windows的HOW-TO

原版的:

无需整个Visual Studio,您只需下载构建工具

Microsoft Build Tools 2013:http : //www.microsoft.com/zh-cn/download/details.aspx?id=40760

运行cmd设置全局标志以使用2013版本:

npm config set msvs_version 2013 --global

在此之后,一切应该恢复正常,并且您的npm install / node-gyp rebuild将正常工作


Build Tools不包括Platform Toolsets ...不幸的是,似乎没有办法安装Visual Studio :(还请阅读Windows上node- gyp

更新了答案,以包括来自node-gyp的新自述文件,谢谢@MichaelK。
catalint 2015年

2
我安装了VS2015和运行此命令npm config set msvs_version 2015 --global其作品,以及
JRulle

同样,安装Microsoft Build Tools 2015并运行npm config set msvs_version 2015 --global作品
Jon Onstott

1
如上所述,使用NPM(节点程序包管理器)DID运行“ windows-build-tools” 对我而言有效,但仅当通过Microsoft PowerShell运行它时才有效。这是Microsoft提供的10多年的Windows实用程序。它具有运行构建工具所需的管理权限。找到PowerShell,右键单击它,然后以管理员身份运行。请注意,以Admin身份运行标准CMD提示符可能有效,但是我使用PowerShell成功。额外的工具和类似UNIX的命令支持可能是其起作用的一部分,尽管以Admin身份运行是更大的解决方案。
Michael M

41

只需添加--msvs_version = 2012

node-gyp rebuild --msvs_version=2012

要么

node-gyp configure --msvs_version=2012
node-gyp build 

与上述相同的答案。
Blairg23

1
我首先回答,请看日期:)
msulhas 2014年

21

尝试为Node.js安装软件包时遇到了相同的问题。经过大量的糊涂之后,我发现了这个步行槽:https : //github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

完成这些步骤后,我可以使用“ npm install”而不会出现任何问题。


谢谢!!!大规模KUDOS ps,您还必须将Python添加到您的路径中:stackoverflow.com/questions/4621255/…–
sidonaldson

如果您已经安装了Visual Studio,则最受好评的答案可能会起作用,但是,如果您根本没有答案,则需要此答案。谢谢!
JD史密斯

本演练是迄今为止最好的。但是,所有这些base64问题都是完全不必要和烦人的!
Benedikt 2014年

哦,是的,这就是我所需要的。我发现的最佳演练对它有效!
科林2014年

我有一个使用Couchbase SDK for Node的Node.js项目,该项目可以在具有Visual Studio 2008、2010和2012的工作计算机上很好地构建。我想为没有安装Visual Studio副本的“爱好者”测试安装。我从家用计算机上卸载了所有Microsoft开发工具和SDK,并尝试了各种“快速”选项。只有遵循了TooTallNate记录的这些步骤之后,我才能够为Windows构建Couchbase二进制文件,包括使用NW.js(以前称为node-webkit)重新绑定为“桌面”应用程序操作的步骤:'nw-gyp rebuild- -target = 0.12.0'–
瑞克·鲁特

13

感谢@felixrieseberg,您只需要安装Windows-build-tools npm软件包,就可以了。

npm install --global --production windows-build-tools

您无需安装Visual Studio。

您无需安装Microsoft Build Tools。

从仓库中:

安装后,npm将自动执行此模块,该模块将下载并安装Microsoft免费提供的Visual C ++ Build Tools 2015。这些工具是编译流行的本机模块所必需的。它还将安装Python 2.7,并适当配置您的计算机和npm。

Windows Vista / 7需要.NET Framework 4.5.1(当前未由此软件包自动安装)

两种安装均无冲突,这意味着它们不会与Visual Studio,C ++ Build Tools或Python的现有安装混淆。


1
你是绝对正确的。我花了几个小时来处理VS,npm和gyp版本,但是没有.NET 4.5.1(完全),绝对没有办法编译它。这也解释了为什么它可以与大多数VS安装一起使用,因为它们与.NET预捆绑在一起。
Xan-Kun Clark-Davis

12

在Windows 8上,它对我有用:

npm install -g node-gyp -msvs_version=2012

然后

npm install -g restify

1
我认为restify软件包与OP问题无关restify只是受同一问题影响的几个软件包之一。
2015年

5

经过DAYS的挖掘,IRC上的某人建议我尝试使用

Windows 7.1 SDK Command Prompt

快捷方式(链接到C:\ Windows \ System32 \ cmd.exe / E:ON / V:ON / T:0E / K“ C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd” )。我认为您必须拥有较旧的7.1 SDK(即使在Windows 8.1上也是如此),因为较新的版本使用msbuild.exe而不是vcbuild.exe,这是node-gyp想要的,尽管此时它的大小是节点的两倍:/

进入该提示后,我必须运行以下命令来获取x86上下文,因为编译器将错误视为与体系结构有关的错误:

setenv.cmd /Release /x86

然后,我能够成功运行试图使用node-gyp重新编译内容的npm命令。


4

我有相同的isuee并完成了上面的所有魔术,唯一对我有用的魔术是来自https://github.com/atom/atom/issues/2435

“因为--msvs_version = 2013在构建脚本运行时未传递给node-gyp。请设置GYP_MSVS_VERSION = 2013 env变量,并且此后应该可以工作。”

砰! 有效



2

对于Windows 8 64位,安装zmq和protobuf,以下对我有用: 在命令行上安装Visual Studio 2012

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf

的Visual Studio 2012还配备了“开发人员命令提示符下VS2012”所以你不必来定制你的ENV PATH变量

1

我认为解决方案是使用.net Framework 3.5下载 为Server 2008安装Microsoft Windows SDK

仅安装Visual Studio 2008

问题是Windows构建node-gyp执行vcbuid.exe文件,由于某种原因找不到它。

谢谢



2
它找不到VCBuild的原因是,根据codeproject.com/Articles/562386/…
UnPlan2ned 2013年

请参阅下面的答案。vcbuild.exe是必需的,但是必须设置许多环境变量,而node-gyp项目没有记录它们。
2013年


0

我在编译nodejs zmq时也遇到了很多问题。

对于vcbuild.exe的问题,只需将其添加到PATH中

对于其他问题,我可以只使用编译 Windows 7.1 SDK Command Prompt

(菜单程序-> Microsoft Windows SDK v7.1-> Windows 7.1 SDK命令提示符)

并从提示:

npm install zmq

这是可行的:)


0

经过长时间的奋斗,我将节点体系结构切换为x86,它的工作原理很吸引人。


1
您能否详细说明如何切换到x86?
阿曼·奥尔特加

0

在cmd中根据您的版本将Visual Studio路径设置为

Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%

Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%

Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%

在node-master(从git下载的原始节点模块)中,以管理员权限运行vcbuild.bat。vcbild.bat将生成与Windows相关的依存关系,并将在node-master中添加文件夹名称Release

一旦运行,将需要一些时间来构建文件。

然后在具有.gyp文件的目录中使用命令

node-gyp rebuild --msvs_version=2012 --nodedir="Dive Name:\path to node-master\node-master"

这将建立所有依赖关系。


0

我通过本教程在Windows 8和Windows 10 Pro上解决了这个问题。我尝试了很多次,使用许多不同的解决方案来解决此问题,但仅为此而工作:http : //www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64 我注意到我没有像本教程一样使用nodist来控制节点版本,我使用了NVM并且运行良好,我没有使用nodist测试本教程。我使用了节点5.2.0。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.