Tidak dapat menginstal modul simpul yang memerlukan kompilasi pada Windows 7 x64 / VS2012

192

Saya tidak dapat menginstal modul apa pun yang memerlukan kompilasi. Semua mereka gagal dengan kesalahan berikut:

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

Lingkungan saya:

  • Windows 7 Enterprise x64, versi 6.1.7601
  • simpul x86 0.8.16
  • npm 1.2.0
  • node-gyp 0.8.2
  • Visual Studio 2012 dan banyak paket

Variabel lingkungan terkait:

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

Tidak TERMASUK, LIB, LIBPATH, dll.

Saya melakukan penyelidikan singkat tentang masalah ini dan mencari tahu bahwa dengan pengaturan berikut kompilasi manual (memanggil VCBuild.exe dan msbuild.exe secara langsung) berhasil untuk git yang diklon secara manual: //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

Saya sudah mencoba memanggil node-gyp dengan variabel yang sama dan gagal:

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

Mungkin Anda akan memiliki beberapa ide tentang itu?

Terima kasih.

Alex Netkachov
sumber
Sudahkah Anda mencoba menjalankan vcvarsall.batdaripada mencoba mengatur lingkungan Anda secara manual?
JohnnyHK
Tidak berhasil Masih "MSB3411: Tidak dapat memuat komponen Visual C ++" VCBuild.exe "."
Alex Netkachov
BTW, saya memiliki hasil yang lebih baik dengan "C: \ Program Files \ Microsoft SDKs Windows \ v6.1 \ Bin \ SetEnv.Cmd": kesalahan fatal C1083: Tidak dapat membuka termasuk file: 'stdint.h': Tidak ada file atau direktori seperti itu
Alex Netkachov
2
Saya baru saja akhirnya menginstal bcrypt yang membutuhkan pembangunan di lingkungan win7 64 bit, sudah sulit untuk diurutkan. Dengan situasi saya, saya mengikuti instruksi untuk bcrypt dan untuk node-gyp. Yg menentukan bagi saya adalah menginstal Microsoft Windows 7 SDK dan .Net 4 framework. Setelah itu diinstal (dan saya telah me-restart shell saya) saya menemukan saya bisa mengkompilasi semuanya melalui install untuk bcrypt. Jadi saya hanya ingin tahu apakah Anda menginstal SDK? Saya bertanya karena Anda tidak menyebutkannya dalam daftar Anda.
Metalskin
1
Ini diposting 2015-11-19, dan ITU BEKERJA! (Banyak saran bagus di utas ini tetapi tidak ada kegembiraan) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 Prosedur menginstal Build Tools 2015, bukan VS2012.
dkloke

Jawaban:

148

Coba itu - akan mengaturnya secara global:

npm config set msvs_version 2012 --global
srfrnk
sumber
1
Sempurna! Memperbaiki semua masalah saya!
hansmei
2
Luar biasa, saya mendapatkan kesalahan ketika menjalankan satu set skrip yang memanggil npm jauh di dalam usus. Saya tidak ingin memodifikasi skrip, jadi ini adalah pilihan terbaik bagi saya
Alastair
2
Ini harus menjadi jawaban yang disarankan, bekerja seperti pesona di Windows 10
William
2
Tidak bekerja error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Hijau
pada PC Windows 10 dengan VS2017 saja - Saya menggunakan pengaturan VS2017 untuk juga menginstal 2015 VC build tools. maka perbaikan torazaburo berhasil :) sebenarnya jawaban catalint di bawah ini terlihat lebih baik tetapi saya belum mencobanya ....
Sean
143

Untuk melakukannya tanpa instalasi VS2010, dan hanya 2012, atur bendera msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

sesuai komentar @ Jacob

npm install --msvs_version=2013 jika Anda memiliki versi 2013

Alex
sumber
3
Meskipun saya percaya perintah kedua harus memiliki dua tanda hubung pada parameternya juga - saya menempatkan dua tanda hubung untuk itu dan itu berhasil. Ini membuat saya melewati kesalahan instalasi npm - terima kasih!
Dullroar
1
@Dullroar superuser.com/questions/372203/… itu berhasil untuk saya dengan 1 dash shrug
Alex
Terima kasih untuk ini; yang npm installperintah mendapatkannya bekerja untuk saya. Satu garis juga bekerja untuk saya.
Seiyria
Seharusnya --msvs-version = 2012
RaduM
Ini bekerja luar biasa dengan instal Windows 7 x64 saya! Terima kasih Microsoft (karena telah dicks)!
Blairg23
60

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

npm instal --global windows-build-tools

mengunduh dan menginstal Visual C ++ Build Tools 2015, disediakan gratis oleh Microsoft. Alat-alat ini diperlukan untuk menyusun modul asli yang populer. Ini juga akan menginstal Python 2.7, mengkonfigurasi mesin Anda dan npm dengan tepat.

Perbarui v2:

node-gyp memperbarui readme mereka untuk memasukkan BAGAIMANA untuk windows

Asli:

Tidak perlu untuk seluruh studio visual, Anda dapat mengunduh hanya alat build

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

jalankan cmd untuk mengatur flag global untuk menggunakan versi 2013:

npm config set msvs_version 2013 --global

setelah ini semuanya akan kembali normal dan npm install / node-gyp Anda akan berfungsi kembali

catalint
sumber
Build Tools tidak termasuk Platform Toolsets ... sayangnya sepertinya tidak ada jalan lain untuk menginstal Visual Studio :( juga membaca instruksi instalasi untuk node-gyp di windows: github.com/nodejs/node-gyp
Michael K.
jawaban yang diperbarui untuk menyertakan readme baru dari node-gyp, terima kasih @MichaelK.
catalint
2
Saya menginstal VS2015 dan menjalankan perintah ini npm config set msvs_version 2015 --globalyang juga berfungsi
JRulle
Demikian pula, menginstal Microsoft Build Tools 2015 dan menjalankan npm config set msvs_version 2015 --globalkarya
Jon Onstott
1
Menjalankan 'windows-build-tools' seperti yang dinyatakan di atas menggunakan NPM (Node Package Manager) DID bekerja untuk saya, tetapi hanya ketika menjalankannya melalui Microsoft PowerShell . Ini adalah utilitas Windows yang disediakan oleh Microsoft selama lebih dari 10 tahun. Ia memiliki hak administratif yang diperlukan untuk menjalankan Alat Bangun. Temukan PowerShell, klik kanan padanya, dan jalankan sebagai Administrator. Perhatikan bahwa menjalankan prompt CMD standar sebagai Admin juga dapat berfungsi, tetapi saya berhasil dengan PowerShell . Tooling tambahan dan dukungan perintah seperti UNIX mungkin menjadi bagian dari mengapa ini bekerja, meskipun menjalankannya sebagai Admin adalah solusi yang lebih besar.
Michael M
41

tambahkan saja --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

atau

node-gyp configure --msvs_version=2012
node-gyp build 
msulha
sumber
Jawaban yang sama seperti di atas.
Blairg23
1
Saya jawab dulu, lihat tanggalnya :)
msulhas
21

Saya memiliki masalah yang sama ketika mencoba menginstal paket untuk Node.js. Setelah beberapa googeling yang luas saya menemukan walktrough ini: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Ketika saya telah mengikuti langkah-langkah ini saya bisa menggunakan "npm install" tanpa masalah.

Robin Ridderholt
sumber
TERIMA KASIH!!! MASSIVE KUDOS ps Anda juga harus menambahkan Python ke jalur Anda: stackoverflow.com/questions/4621255/…
sidonaldson
Jika Anda sudah menginstal Visual Studio maka jawaban terpilih dapat bekerja, namun jika Anda tidak memilikinya sama sekali maka Anda memerlukan jawaban ini. Terima kasih!
JD Smith
Panduan ini adalah yang terbaik sampai sekarang. Tanpa masalah, semua masalah base64 ini sama sekali tidak perlu dan menjengkelkan!
Benedikt
Oh ya, inilah yang saya butuhkan. Berjalan kaki terbaik yang saya temukan dan berhasil!
Corin
Saya memiliki proyek Node.js menggunakan Couchbase SDK untuk Node yang dibuat dengan baik di komputer kerja saya, yang memiliki Visual Studio 2008, 2010, dan 2012. Saya ingin menguji instalasi untuk "penggemar" tanpa salinan Visual Studio. Saya menghapus semua alat pengembangan Microsoft dan SDK dari komputer di rumah saya, dan mencoba berbagai opsi "Express". Hanya setelah saya mengikuti langkah-langkah yang didokumentasikan oleh TooTallNate ini saya dapat membangun binari Couchbase untuk Windows, termasuk langkah ini untuk menjalankan kembali operasi sebagai aplikasi "desktop" menggunakan NW.js (sebelumnya node-webkit): 'nw-gyp rebuild - -target = 0,12.0 '
Rick Rutt
13

Berkat @felixrieseberg , Anda hanya perlu menginstal paket npm windows-build-tools dan Anda siap melakukannya.

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

Anda tidak perlu menginstal Visual Studio.

Anda tidak perlu menginstal Alat Bangun Microsoft.

Dari repo:

Setelah instalasi, npm akan secara otomatis menjalankan modul ini, yang mengunduh dan menginstal Visual C ++ Build Tools 2015, disediakan secara gratis oleh Microsoft. Alat-alat ini diperlukan untuk menyusun modul asli yang populer. Ini juga akan menginstal Python 2.7, mengkonfigurasi mesin Anda dan npm dengan tepat.

Windows Vista / 7 membutuhkan .NET Framework 4.5.1 (Saat ini tidak diinstal secara otomatis oleh paket ini)

Kedua instalasi bebas konflik, artinya mereka tidak mengacaukan dengan instalasi Visual Studio, C ++ Build Tools, atau Python yang sudah ada.

Ramazan Polat
sumber
1
Anda memang benar. Saya treid VS, npm dan versi gyp selama berjam-jam, tetapi tanpa .NET 4.5.1 (persis) sama sekali tidak ada cara untuk mendapatkannya dikompilasi. Itu juga menjelaskan mengapa itu akan bekerja dengan sebagian besar VS-Instalasi, karena mereka datang dengan .NET yang sudah dibundel.
Xan-Kun Clark-Davis
12

pada windows 8, itu berhasil bagi saya menggunakan:

npm install -g node-gyp -msvs_version=2012

kemudian

npm install -g restify
amgohan
sumber
1
Saya tidak berpikir bahwa paket restify ada hubungannya dengan pertanyaan OP, restify hanya salah satu dari beberapa paket yang terpengaruh oleh masalah yang sama.
adelriosantiago
5

Setelah HARI penggalian, seseorang di IRC menyarankan agar saya mencoba menggunakan

Windows 7.1 SDK Command Prompt

Pintasan (tautan ke C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Saya pikir Anda HARUS memiliki 7.1 SDK yang lebih lama (bahkan pada Windows 8.1) karena yang lebih baru menggunakan msbuild.exe daripada vcbuild.exe yang diinginkan oleh node-gyp walaupun itu dua kali lebih tua dari node pada titik ini: /

Setelah di prompt itu, saya harus menjalankan yang berikut untuk mendapatkan konteks x86 karena kompiler itu melempar sebagai kesalahan sebaliknya tentang arsitektur:

setenv.cmd /Release /x86

LALU saya berhasil menjalankan perintah npm yang mencoba menggunakan node-gyp untuk mengkompilasi ulang hal-hal.

rainabba
sumber
4

Saya memiliki isuee yang sama dan melakukan semua keajaiban di atas, satu-satunya hal yang melakukan keajaiban bagi saya adalah dari https://github.com/atom/atom/issues/2435

"Karena --msvs_version = 2013 tidak diteruskan ke node-gyp saat dijalankan oleh skrip build. Setel variabel GYP_MSVS_VERSION = 2013 env dan itu akan berfungsi setelahnya."

Bang! itu berhasil

amitgur
sumber
3

Di Windows Ini membantu saya: (kredit masuk ke) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp Saya mencoba MINGW32, tetapi tidak berhasil.

di cmd.exe

$ cd "C:\Program Files\nodejs\node_modules\npm"
$ npm install -g node-gyp@latest
danielpopa
sumber
1
jika ini gagal untuk Anda, periksa apakah Anda memiliki variabel lingkungan PYTHON = c: \ Python27 \ python.exe, dan stackoverflow.com/a/15937635/2873481
Vladimir Vukanac
npm install -g node-gyp @ terbaru?
Alexander Mills
2

Untuk windows 8 64-bit, instal zmq dan protobuf, berikut ini berfungsi untuk saya: Instal Visual Studio 2012 Pada baris perintah:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
ihm
sumber
Visual Studio 2012 juga dilengkapi dengan 'Command Command Prompt for VS2012' sehingga Anda tidak perlu menyesuaikan variabel PATH env Anda
strider
1

Saya pikir solusinya adalah mengunduh instal Microsoft windows sdk untuk server 2008 dengan .net framework 3.5

atau cukup instal Visual studio 2008 .

Masalahnya adalah untuk windows membangun node-gyp mengeksekusi file vcbuid.exe, dan untuk beberapa alasan tidak dapat menemukannya.

Terima kasih

Hubert Boma Manilla
sumber
2
Alasan untuk itu tidak menemukan VCBuild adalah bahwa hal itu diganti dengan MSBuild pada 2010, menurut codeproject.com/Articles/562386/...
UnPlan2ned
Lihat jawaban saya di bawah ini. Diperlukan vcbuild.exe tetapi banyak variabel lingkungan harus ditetapkan dan proyek node-gyp tidak mendokumentasikannya.
rainabba
0

Saya juga punya banyak masalah untuk mengkompilasi nodejs zmq.

Untuk masalah dengan vcbuild.exe, tambahkan saja ke PATH

Untuk masalah lain saya bisa mengkompilasi hanya menggunakan Windows 7.1 SDK Command Prompt

(Menu Program -> Microsoft Windows SDK v7.1 -> Windows 7.1 SDK Command Prompt)

Dan dari prompt:

npm install zmq

Itu berhasil :)

Kleyson Rios
sumber
0

Setelah perjuangan yang panjang, saya telah mengubah arsitektur node saya ke x86 dan itu bekerja seperti pesona.

pengguna3035156
sumber
1
dapatkah Anda menjelaskan lebih lanjut tentang bagaimana Anda beralih ke x86?
Arman Ortega
0

di cmd set jalur Visual Studio tergantung pada versi Anda sebagai

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

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

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

Dalam node-master (modul simpul asli yang diunduh dari git) jalankan vcbuild.bat dengan hak istimewa admin. vcbild.bat akan menghasilkan dependensi terkait windows dan akan menambahkan nama folder Release di node-master

Setelah dijalankan, akan dibutuhkan waktu untuk membuat file.

Kemudian dalam direktori memiliki perintah .gyp file use

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

ini akan membangun semua dependensi.

Niket
sumber
0

Saya memecahkan masalah ini di windows 8 dan windows 10 pro dengan tutorial ini. Saya mencoba berkali-kali untuk menyelesaikan masalah ini dengan banyak solusi berbeda, tetapi hanya bekerja untuk saya dengan ini: http://www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64 Saya perhatikan bahwa saya tidak menggunakan nodist untuk mengontrol versi simpul seperti tutorial ini, saya menggunakan NVM dan bekerja dengan baik, saya tidak menguji tutorial ini dengan nodist. Saya menggunakan simpul 5.2.0.

Marco Blos
sumber