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

我无法安装任何需要编译的模块。 所有他们失败,以下错误:

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

我的环境:

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

相关环境variables:

 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等

我做了一个简短的调查问题,并找出以下设置手动编译(调用VCBuild.exe和msbuild.exe直接)手动克隆git://github.com/einaros/ws.git成功:

 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 

我试着用相同的variables调用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 

也许你会有一些关于它的想法?

谢谢。

要做到这一点,没有VS2010的安装,只有2012年,设置msvs_version标志:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

根据@Jacob评论

npm install --msvs_version=2013如果你有2013版本的话

试试 – 将其设置为全局:

 npm config set msvs_version 2012 --global 

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

npm install – 全局windows-build-tools

下载并安装由Microsoft免费提供的Visual C ++ Build Tools 2015。 这些工具是编译stream行的本地模块所必需的。 它也将安装Python 2.7,适当地configuration你的机器和npm。

更新v2:

node-gyp更新了他们的自述文件,以包括Windows的HOWTO

原版的:

无需整个Visual Studio,只需下载构build工具即可

Microsoft生成工具2013年: http : //www.microsoft.com/en-us/download/details.aspx?id=40760

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

npm config set msvs_version 2013 --global

在此之后,一切应该恢复正常,你的npm install / node-gyp重build将会工作

只需添加–msvs_version = 2012

 node-gyp rebuild --msvs_version=2012 

要么

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

尝试为Node.js安装程序包时遇到同样的问题 经过一些广泛的googeling我发现这walktrough: https : //github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

当我按照这些步骤,我可以使用“npm install”没有任何问题。

在Windows 8上,它为我工作使用:

 npm install -g node-gyp -msvs_version=2012 

然后

 npm install -g restify 

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

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

您将不需要安装Visual Studio。

您将不需要安装Microsoft Build Tools。

从回购:

安装完成后,npm将自动执行该模块,该模块下载并安装由Microsoft免费提供的Visual C ++ Build Tools 2015。 这些工具是编译stream行的本地模块所必需的。 它也将安装Python 2.7,适当地configuration你的机器和npm。

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

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

挖了几天之后,有人在IRC上build议我尝试使用

 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命令。

我有同样的想法,并做了上述所有的魔法,唯一对我的魔术是从https://github.com/atom/atom/issues/2435

“因为–msvs_version = 2013在构build脚本运行时不会传递给node-gyp,请设置GYP_MSVS_VERSION = 2013 envvariables,它应该在之后工作。

砰! 有效

在Windows上这帮助我:(信贷去) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp我试过MINGW32,但没有成功。;

cmd.exe

 $ cd "C:\Program Files\nodejs\node_modules\npm" $ npm install -g node-gyp@latest 

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

 SET VisualStudioVersion=11.0 npm install zmq npm install protobuf 

我认为解决的办法是下载安装微软Windows Server 2008与.NET Framework 3.5

或者只安装Visual Studio 2008

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

谢谢

  1. 安装Python 2.7(不是3.x)
  2. 将path添加到环境variablesPATH上包含vcbuild.exe的目录中
  3. 如果你需要vcbuild.exe把它在这里https://github.com/kin9puppy/vcbuildFixForNode

编译nodejs zmq也有很多问题。

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

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

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

并从提示:

npm install zmq

这是行之有效的:)

经过漫长的斗争之后,我将节点架构切换到了x86架构,并且像一个魅力一样。

在cmd中根据你的版本设置Visual Studiopath

 Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS% Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS% Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS% 

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

一旦运行它将需要时间来build立文件。

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

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

这将构build所有的依赖关系。

我在本教程中解决了Windows 8和Windows 10专业版中的这个问题。 我尝试了很多次,用很多不同的解决scheme来解决这个问题,但是只能用这个工作: http : //www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64我注意到我没有使用nodist来控制节点版本,就像这个教程,我使用NVM并且工作正常,我不用nodist来testing这个教程。 我使用了节点5.2.0。