Não é possível instalar módulos de nó que exigem compilação no Windows 7 x64 / VS2012


192

Não consigo instalar nenhum dos módulos que exigem compilação. Todos eles falham com o seguinte erro:

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

Meu ambiente:

  • Windows 7 Enterprise x64, versão 6.1.7601
  • nó x86 0.8.16
  • npm 1.2.0
  • node-gyp 0.8.2
  • Visual Studio 2012 e vários pacotes

Variáveis ​​de ambiente relacionadas:

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

Não inclui, LIB, LIBPATH, etc.

Fiz uma breve investigação do problema e descobri que, com a seguinte configuração, a compilação manual (chamando VCBuild.exe e msbuild.exe diretamente) é bem-sucedida no git clonado manualmente: //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

Eu tentei chamar node-gyp com as mesmas variáveis ​​e falhou:

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

Talvez você tenha algumas idéias sobre isso?

Obrigado.


Você tentou executar em vcvarsall.batvez de tentar configurar seu ambiente manualmente?
precisa saber é o seguinte

Sem sucesso. Ainda "MSB3411: Não foi possível carregar o componente do Visual C ++" VCBuild.exe "."
precisa saber é o seguinte

BTW, tenho melhores resultados com "C: \ Arquivos de programas \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": erro fatal C1083: Não é possível abrir o arquivo de inclusão: 'stdint.h': esse arquivo ou diretório não existe
precisa saber é o seguinte

2
Eu finalmente tenho o bcrypt para instalar, o que requer a criação de um ambiente win7 de 64 bits, foi difícil para você resolver o problema. Com a minha situação, segui as instruções para bcrypt e para node-gyp. O argumento decisivo para mim foi instalar a estrutura do Microsoft Windows 7 SDK e .Net 4. Depois que ele foi instalado (e eu reiniciei meu shell), descobri que era possível compilar tudo via instalação do bcrypt. Então, eu queria saber se você instalou o SDK? Eu pergunto como você não mencionou na sua lista.
Metalskin 13/01

1
Isto foi publicado 19/11/2015, e FUNCIONA! (Muitas boas sugestões sobre este encadeamento, mas sem alegria) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 O procedimento instala o Build Tools 2015, não o VS2012.
dkloke

Respostas:


148

Tente isso - definirá globalmente:

npm config set msvs_version 2012 --global

1
Perfeito! Corrigido todos os meus problemas!
hansmei

2
Excelente, estava recebendo o erro ao executar um conjunto de scripts que invocavam o npm nas entranhas. Eu não queria modificar os scripts, assim que esta era a melhor opção para mim
Alastair

2
Esta deve ser a resposta recomendada, funcionou como um encanto no Windows 10
William

2
Não funciona error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Verde

em um PC Windows 10 apenas com o VS2017 - usei a instalação do VS2017 para também instalar as ferramentas de compilação do VC 2015. então a correção do torazaburo funcionou :) na verdade, a resposta do catalint abaixo parece melhor, mas eu ainda não tentei .... #: 19317
Sean

143

Para fazer isso sem a instalação do VS2010 e apenas 2012, defina o sinalizador msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

como por @Jacob comentário

npm install --msvs_version=2013 se você tem a versão 2013


3
Embora eu acredite que o segundo comando também deva ter dois hífens no parâmetro - coloquei dois hífens nele e funcionou. Isso me fez passar pelos erros de instalação do npm - obrigado!
Dullroar

1
@Dullroar superuser.com/questions/372203/… funcionou para mim com um encolher de ombros
Alex

Obrigado por isso; o npm installcomando fez funcionar para mim. Um traço funcionou para mim também.
Seiyria

Deve ser --msvs-version = 2012
RaduM

Isso funcionou surpreendentemente com minha instalação do Windows 7 x64! Obrigado Microsoft (por ser idiota)!
precisa saber é o seguinte

60

Atualização v3: https://www.npmjs.com/package/windows-build-tools

npm install --global windows-build-tools

baixa e instala o Visual C ++ Build Tools 2015, fornecido gratuitamente pela Microsoft. Essas ferramentas são necessárias para compilar módulos nativos populares. Ele também instalará o Python 2.7, configurando sua máquina e o npm adequadamente.

Atualização v2:

node-gyp atualizou seu leia-me para incluir o HOW-TO for windows

Original:

Não há necessidade de todo o visual studio, você pode fazer o download apenas das ferramentas de criação

Ferramentas de compilação da Microsoft 2013: http://www.microsoft.com/en-us/download/details.aspx?id=40760

execute o cmd para definir o sinalizador global para usar a versão 2013:

npm config set msvs_version 2013 --global

Depois disso, tudo deve voltar ao normal e sua reconstrução npm install / node-gyp funcionará


As ferramentas de compilação não incluem os conjuntos de ferramentas da plataforma ... infelizmente, parece não haver maneira de instalar o Visual Studio :( também leia as instruções de instalação do node-gyp no windows: github.com/nodejs/node-gyp
Michael K.

resposta atualizada para incluir o novo leia-me do node-gyp, obrigado @MichaelK.
catalint

2
Eu instalei o VS2015 e correu este comando npm config set msvs_version 2015 --globalque funciona bem
JRulle

Da mesma forma, a instalação da Microsoft Ferramentas de construção de 2015 e em execução npm config set msvs_version 2015 --globalobras
Jon Onstott

1
Executando os 'janelas-build-ferramentas' como indicado acima, utilizando NPM (Node Package Manager) DID trabalho para mim, mas só quando executá-lo através do Microsoft PowerShell . Este é um utilitário do Windows fornecido pela Microsoft há mais de 10 anos. Possui os direitos administrativos necessários para executar as Ferramentas de Compilação. Localize o PowerShell, clique com o botão direito do mouse e execute como Administrador. Observe que executar o prompt padrão do CMD como administrador também pode funcionar, mas tive sucesso com o PowerShell . As ferramentas extras e o suporte a comandos do tipo UNIX podem ser parte do motivo pelo qual ele funciona, embora executá-lo como Admin fosse a solução maior.
Michael M


21

Eu tive o mesmo problema ao tentar instalar um pacote para Node.js. Depois de pesquisar bastante, encontrei este guia: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Depois de seguir estas etapas, eu poderia usar o "npm install" sem problemas.


OBRIGADO!!! KUDOS MASSIVE ps você também tem que adicionar Python ao seu caminho: stackoverflow.com/questions/4621255/...
sidonaldson

Se você já possui o Visual Studio instalado, as respostas mais votadas podem funcionar; no entanto, se você não as tiver, precisará dessa resposta. Obrigado!
JD Smith

Este passo a passo é o melhor até agora. No entanto, todo esse problema base64 é totalmente desnecessário e irritante!
Benedikt

Oh sim, era disso que eu precisava. Melhor caminhada que eu encontrei e funciona!
Corin

Eu tenho um projeto Node.js usando o Couchbase SDK for Node que é compilado no meu computador de trabalho, que possui o Visual Studio 2008, 2010 e 2012. Queria testar a instalação de "entusiastas" sem nenhuma cópia do Visual Studio. Desinstalei todas as ferramentas de desenvolvimento e SDKs da Microsoft do meu computador doméstico e tentei várias opções "Expressas". Somente depois que segui essas etapas documentadas por TooTallNate eu consegui criar os binários do Couchbase para Windows, incluindo esta etapa para religar para operação como um aplicativo "desktop" usando o NW.js (anteriormente node-webkit): 'nw-gyp rebuild - -target = 0.12.0 '
Rick Rutt

13

Graças ao @felixrieseberg , você só precisa instalar o pacote npm do windows-build-tools e pronto .

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

Você não precisará instalar o Visual Studio.

Você não precisará instalar o Microsoft Build Tools.

Do repositório:

Após a instalação, o npm executará automaticamente este módulo, que baixa e instala o Visual C ++ Build Tools 2015, fornecido gratuitamente pela Microsoft. Essas ferramentas são necessárias para compilar módulos nativos populares. Ele também instalará o Python 2.7, configurando sua máquina e o npm adequadamente.

O Windows Vista / 7 requer o .NET Framework 4.5.1 (atualmente não é instalado automaticamente por este pacote)

Ambas as instalações são livres de conflitos, o que significa que elas não interferem nas instalações existentes do Visual Studio, C ++ Build Tools ou Python.


1
Você está absolutamente certo. Treino as versões VS, npm e gyp por horas, mas sem o .NET 4.5.1 (exatamente) não há absolutamente nenhuma maneira de compilá-lo. Isso também explica por que ele funcionará com a maioria das instalações VS, pois elas vêm com o .NET pré-empacotado.
Xan-Kun Clark-Davis

12

no windows 8, funcionou para mim usando:

npm install -g node-gyp -msvs_version=2012

então

npm install -g restify

1
Eu não acho que o pacote restify tenha algo a ver com a questão OP, restify é apenas um dos vários pacotes afetados pelo mesmo problema.
Adelriosantiago

5

Depois de DAYS de escavação, alguém no IRC sugeriu que eu tentasse usar o

Windows 7.1 SDK Command Prompt

Atalho (links para C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Arquivos de Programas \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ) Eu acho que você DEVE ter o SDK 7.1 mais antigo (mesmo no Windows 8.1) porque os mais novos usam o msbuild.exe em vez do vcbuild.exe, que é o que o node-gyp deseja, mesmo que seja duas vezes mais antigo que o nó neste momento: /

Uma vez nesse prompt, eu tive que executar o seguinte para obter o contexto x86 porque o compilador estava lançando como erro a arquitetura:

setenv.cmd /Release /x86

ENTÃO eu fui capaz de executar com êxito os comandos npm que estavam tentando usar o node-gyp para recompilar as coisas.


4

Eu tive a mesma isuee e fiz toda a mágica acima, a única coisa que fez a mágica para mim é de https://github.com/atom/atom/issues/2435

"Como a --msvs_version = 2013 não é passada para o node-gyp quando executada pelo script de construção. Defina a variável de ambiente GYP_MSVS_VERSION = 2013 e deverá funcionar depois."

Bang! funcionou


3

No Windows Isso me ajudou: (créditos: https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp Tentei o MINGW32, mas sem sucesso.

em cmd.exe

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

1
se isso falhar, verifique se você tem a variável de ambiente PYTHON = c: \ Python27 \ python.exe e stackoverflow.com/a/15937635/2873481
Vladimir Vukanac 27/10/2015

npm install -g node-gyp @ mais recente?
Alexander Mills

2

Para o Windows 8 de 64 bits, instalando o zmq e o protobuf, o seguinte funcionou para mim: Instale o Visual Studio 2012 Na linha de comando:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf

O Visual Studio 2012 também vem com o 'Prompt de Comando do Desenvolvedor para VS2012', para que você não precise personalizar sua variável env PATH
strider

1

Eu acho que a solução é baixar instalar o Microsoft Windows SDK para o servidor 2008 com o .net framework 3.5

ou apenas instale o Visual studio 2008 .

O problema é que o Windows cria o node-gyp executa o arquivo vcbuid.exe e, por algum motivo, não o encontra.

obrigado



2
A razão para não encontrar VCBuild é que ele foi substituído por MSBuild em 2010, de acordo com codeproject.com/Articles/562386/...
UnPlan2ned

Veja minha resposta abaixo. vcbuild.exe é necessário, mas muitas variáveis ​​de ambiente devem ser definidas e o projeto node-gyp não as documenta.
rainabba 5/12


0

Também tive muitos problemas para compilar nodejs zmq.

Para o problema com vcbuild.exe, basta adicioná-lo ao PATH

Para outros problemas, eu poderia compilar usando apenas Windows 7.1 SDK Command Prompt

(Programas do Menu -> Microsoft Windows SDK v7.1 -> Prompt de Comando do Windows 7.1 SDK)

E a partir do prompt:

npm install zmq

Isso funciona :)


0

Após uma longa luta, mudei minha arquitetura de nó para x86 e funcionou como um encanto.


1
você pode elaborar mais sobre como você mudou para o x86?
Arman Ortega

0

no cmd, defina o caminho do Visual Studio dependendo da sua versão como

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

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

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

No node-master (módulo do nó original baixado do git), execute vcbuild.bat com privilégios de administrador. vcbild.bat irá gerar dependências relacionadas ao Windows e incluirá o nome da pasta Release no node-master

Uma vez executado, levará tempo para criar os arquivos.

Em seguida, no diretório que possui o arquivo .gyp, use o comando

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

isso criará todas as dependências.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.