【问题标题】:Cannot install node modules that require compilation on Windows 7 x64/VS2012无法在 Windows 7 x64/VS2012 上安装需要编译的节点模块
【发布时间】:2012-12-26 01:12:15
【问题描述】:

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

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
  • 节点-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 等。

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

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 而不是手动设置环境?
  • 没有成功。仍然是“MSB3411:无法加载 Visual C++ 组件“VCBuild.exe”。”
  • 顺便说一句,“C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\SetEnv.Cmd”我有更好的结果:致命错误 C1083:无法打开包含文件:'stdint. h': 没有这样的文件或目录
  • 我终于安装了 bcrypt,它需要在 win7 64 位环境下构建,排序很麻烦。根据我的情况,我按照 bcrypt 和 node-gyp 的说明进行操作。对我来说最重要的是安装 Microsoft Windows 7 SDK 和 .Net 4 框架。一旦安装了它(并且我已经重新启动了我的 shell),我发现我可以通过安装 bcrypt 来编译所有内容。所以我只是想知道你是否安装了 SDK?我问你,因为你没有在你的列表中提到它。
  • 这是 2015 年 11 月 19 日发布的,它工作正常! (关于这个线程有很多好的建议,但没有乐趣)github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 该程序安装的是 Build Tools 2015,而不是 VS2012。

标签: node.js visual-studio-2012 node-gyp


【解决方案1】:

更新 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 更新了他们的自述文件以包含 HOW-TO for windows

原文:

不需要整个visual studio,只需下载构建工具即可

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 rebuild 将工作

【讨论】:

  • 构建工具不包括平台工具集......遗憾的是似乎没有办法安装 Visual Studio :( 另请阅读 Windows 上 node-gyp 的安装说明:github.com/nodejs/node-gyp跨度>
  • 更新答案以包含来自 node-gyp 的新自述文件,感谢@MichaelK。
  • 我安装了 VS2015 并运行了这个命令 npm config set msvs_version 2015 --global 效果也很好
  • 同样,安装 Microsoft Build Tools 2015 并运行 npm config set msvs_version 2015 --global 工作
  • 使用 NPM(节点包管理器)DID 运行上述“windows-build-tools”对我有用,但仅在通过 Microsoft PowerShell 运行时。这是 Microsoft 提供了 10 多年的 Windows 实用程序。它具有运行构建工具所需的管理权限。找到 PowerShell,右键单击它,然后以管理员身份运行。请注意,以管理员身份运行标准 CMD 提示可能可以工作,但我使用 PowerShell 成功了。额外的工具和类似 UNIX 的命令支持可能是它工作的部分原因,尽管以管理员身份运行它是更大的解决方案。
【解决方案2】:

感谢@felixrieseberg,您只需要安装windows-build-tools npm package 就可以了。

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

您无需安装 Visual Studio。

您无需安装 Microsoft Build Tools。

来自回购:

安装后npm会自动执行这个模块, 下载并安装 Visual C++ Build Tools 2015,免费提供 微软收费。编译流行需要这些工具 本机模块。它还将安装 Python 2.7,配置您的 machine 和 npm 适当。

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

两种安装都没有冲突,这意味着它们不会与现有的 Visual Studio、C++ 构建工具或 Python。

【讨论】:

  • 你是绝对正确的。我使用 VS、npm 和 gyp 版本好几个小时,但如果没有 .NET 4.5.1(确切地说),绝对没有办法编译它。这也解释了为什么它可以与大多数 VS 安装一起使用,因为它们预先捆绑了 .NET。
【解决方案3】:

我通过本教程在 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。

【讨论】:

    【解决方案4】:

    在 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
    

    【讨论】:

    【解决方案5】:
    1. 安装 Python 2.7(不是 3.x)
    2. 在您的环境变量PATH 中添加包含vcbuild.exe 的目录的路径
    3. 如果您需要vcbuild.exe 在这里获取https://github.com/kin9puppy/vcbuildFixForNode

    【讨论】:

      【解决方案6】:

      我有同样的 isuee 并且做了上面所有的魔法,唯一对我有魔法的是来自https://github.com/atom/atom/issues/2435

      “因为 --msvs_version=2013 在构建脚本运行时没有传递给 node-gyp。设置 GYP_MSVS_VERSION = 2013 环境变量,它应该在之后工作。”

      砰!成功了

      【讨论】:

        【解决方案7】:

        在 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(从 gi​​t 下载的原始节点模块)以管理员权限运行 vcbuild.bat。 vcbild.bat 会生成windows相关的依赖,会在node-master中添加文件夹名Release

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

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

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

        这将构建所有依赖项。

        【讨论】:

          【解决方案8】:

          经过长时间的奋斗,我已将节点架构切换到 x86,它的工作原理非常棒。

          【讨论】:

          • 您能否详细说明您是如何切换到 x86 的?
          【解决方案9】:

          尝试一下 - 将其设置为全局:

          npm config set msvs_version 2012 --global
          

          【讨论】:

          • 完美!解决了我所有的问题!
          • 太棒了,我在运行一组在内部深处调用 npm 的脚本时遇到了错误。我不想修改脚本,所以这对我来说是最好的选择
          • 这应该是推荐的答案,在 Windows 10 上就像一个魅力
          • 不起作用。 error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
          • 在仅装有 VS2017 的 Windows 10 PC 上 - 我使用 VS2017 安装程序还安装了 2015 VC 构建工具。然后 torazaburo 的修复工作:) 实际上 catalint 下面的答案看起来更好,但我没有尝试过....
          【解决方案10】:

          要在不安装 VS2010 且仅 2012 的情况下执行此操作,请设置 msvs_version 标志:

          node-gyp rebuild --msvs_version=2012

          npm install <module> --msvs_version=2012

          根据@Jacob 评论

          npm install --msvs_version=2013 如果你有 2013 版

          【讨论】:

          • 虽然我相信第二个命令的参数也应该有两个连字符 - 我为它添加了两个连字符并且它起作用了。这让我克服了我的 npm 安装错误 - 谢谢!
          • @Dullroar superuser.com/questions/372203/… 它对我有用,只需 1 个破折号 shrug
          • 谢谢你; npm install 命令让它为我工作。一个破折号也对我有用。
          • 应该是--msvs-version=2012
          • 这与我的 Windows 7 x64 安装效果惊人!感谢微软(因为是混蛋)!
          【解决方案11】:

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

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

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

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

          然后根据提示:

          npm install zmq

          这很有效:)

          【讨论】:

            【解决方案12】:

            在 Windows 8 上,它对我有用:

            npm install -g node-gyp -msvs_version=2012
            

            然后

            npm install -g restify
            

            【讨论】:

            • 我不认为 restify 包与 OP 问题有任何关系,restify 只是受同样的问题。
            【解决方案13】:

            经过几天的挖掘,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 上),因为较新的 SDK 使用 msbuild.exe 而不是 vcbuild.exe,这是 node-gyp 想要的,即使它现在是 node 的两倍:/

            一旦出现该提示,我必须运行以下命令来获取 x86 上下文,因为编译器会抛出有关架构的错误:

            setenv.cmd /Release /x86
            

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

            【讨论】:

              【解决方案14】:

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

              SET VisualStudioVersion=11.0
              npm install zmq
              npm install protobuf
              

              【讨论】:

              • Visual Studio 2012 还带有“VS2012 的开发人员命令提示符”,因此您不必自定义 env PATH 变量
              【解决方案15】:

              只需添加 --msvs_version=2012

              node-gyp rebuild --msvs_version=2012
              

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

              【讨论】:

              • 与上述相同的答案。
              • 我先回答,看日期:)
              【解决方案16】:

              我在尝试为 Node.js 安装包时遇到了同样的问题。经过一番广泛的谷歌搜索后,我找到了这个演练:https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

              当我按照这些步骤操作后,我可以毫无问题地使用“npm install”。

              【讨论】:

              • 谢谢!!! MASSIVE KUDOS ps,您还必须将 Python 添加到您的路径中:stackoverflow.com/questions/4621255/…
              • 如果您已经安装了 Visual Studio,那么投票最多的答案可能会起作用,但是如果您根本没有它,那么您需要这个答案。谢谢!
              • 这个演练是迄今为止最好的。尽管如此,所有这些 base64 问题都是完全不必要和烦人的!
              • 哦,是的,这正是我所需要的。我发现的最佳演练方法!
              • 我有一个使用 Couchbase SDK for Node 的 Node.js 项目,该项目在我的工作计算机上构建良好,该计算机具有 Visual Studio 2008、2010 和 2012。我想为“爱好者”测试安装,而无需Visual Studio 的任何副本。我从家用电脑上卸载了所有 Microsoft 开发工具和 SDK,并尝试了各种“Express”选项。只有按照 TooTallNate 记录的这些步骤,我才能为 Windows 构建 Couchbase 二进制文件,包括使用 NW.js(以前称为 node-webkit)重新绑定以作为“桌面”应用程序运行的步骤:'nw-gyp rebuild - -target=0.12.0'
              【解决方案17】:

              我认为解决方案是下载 安装 Microsoft windows sdk for server 2008 with .net framework 3.5

              只需安装 Visual Studio 2008

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

              谢谢

              【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-07-01
              • 2011-03-26
              • 2012-02-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多