Không thể cài đặt các mô-đun nút yêu cầu biên dịch trên Windows 7 x64 / VS2012


192

Tôi không thể cài đặt bất kỳ mô-đun nào yêu cầu biên dịch. Tất cả họ thất bại với lỗi sau:

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

Môi trường của tôi:

  • Windows 7 Enterprise x64, phiên bản 6.1.7601
  • nút x86 0.8.16
  • npm 1.2.0
  • nút-gyp 0.8.2
  • Visual Studio 2012 và nhiều gói

Các biến môi trường liên quan:

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

Không bao gồm, bao gồm, LIBPATH, vv

Tôi đã thực hiện một cuộc điều tra ngắn về vấn đề này và nhận ra rằng với thiết lập sau đây, quá trình biên dịch thủ công (gọi trực tiếp VCBuild.exe và msbuild.exe) đã thành công cho git nhân bản thủ công: //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

Tôi đã thử gọi nút-gyp với cùng một biến và không thành công:

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

Có lẽ bạn sẽ có một số ý tưởng về nó?

Cảm ơn.


Bạn đã thử chạy vcvarsall.batthay vì cố gắng thiết lập môi trường của mình một cách thủ công chưa?
JohnnyHK

Không thành công. Vẫn "MSB3411: Không thể tải thành phần Visual C ++" VCBuild.exe "."
Alex Netkachov

BTW, tôi có kết quả tốt hơn với "C: \ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": lỗi nghiêm trọng C1083: Không thể mở tệp bao gồm: 'stdint.h': Không có tệp hoặc thư mục như vậy
Alex Netkachov

2
Cuối cùng tôi cũng đã có bcrypt để cài đặt, đòi hỏi phải xây dựng trên môi trường win7 64 bit, thật khó để sắp xếp. Với tình hình của tôi, tôi đã làm theo các hướng dẫn cho bcrypt và cho nút-gyp. Cái móc sắt đối với tôi là cài đặt Microsoft Windows 7 SDK và .Net 4 framework. Khi nó đã được cài đặt (và tôi đã khởi động lại shell của mình) Tôi thấy tôi có thể biên dịch mọi thứ thông qua cài đặt cho bcrypt. Vì vậy, tôi chỉ tự hỏi nếu bạn đã cài đặt SDK? Tôi hỏi khi bạn không đề cập đến nó trong danh sách của bạn.
Metalkin

1
Điều này đã được đăng 2015-11-19, và CÔNG TRÌNH CNTT! (Nhiều đề xuất tốt về chủ đề này nhưng không có niềm vui) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 Quy trình cài đặt Build Tools 2015, không phải VS2012.
dkloke

Câu trả lời:


148

Hãy thử điều đó - sẽ đặt nó trên toàn cầu:

npm config set msvs_version 2012 --global

1
Hoàn hảo! Đã sửa tất cả các vấn đề của tôi!
hansmei

2
Tuyệt vời, tôi đã nhận được lỗi khi chạy một tập lệnh đã gọi npm sâu trong ruột. Tôi không muốn sửa đổi các tập lệnh, vì vậy đây là lựa chọn tốt nhất cho tôi
Alastair

2
Đây phải là câu trả lời được đề xuất, hoạt động như một cơ duyên trên Windows 10
William

2
Không hoạt động. error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Màu xanh lá cây

trên PC Windows 10 chỉ có VS2017 - Tôi đã sử dụng thiết lập VS2017 để cài đặt các công cụ xây dựng VC 2015. sau đó bản sửa lỗi của torazaburo đã hoạt động :) thực sự câu trả lời của catalint bên dưới có vẻ tốt hơn nhưng tôi đã không thử nó ....
Sean

143

Để thực hiện mà không cần cài đặt VS2010 và chỉ trong năm 2012, hãy đặt cờ msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

theo nhận xét @Jacob

npm install --msvs_version=2013 nếu bạn có phiên bản 2013


3
Mặc dù tôi tin rằng lệnh thứ hai cũng nên có hai dấu gạch nối trên tham số của nó - tôi đặt hai dấu gạch nối cho nó và nó hoạt động. Điều này đã cho tôi vượt qua lỗi cài đặt npm của tôi - cảm ơn!
Dullroar

1
@Dullroar superuser.com/questions/372203/ Từ nó hoạt động với tôi với 1 nhún vai
Alex

Cảm ơn vì điều đó; các npm installlệnh đã nhận nó làm việc cho tôi. Một dấu gạch ngang làm việc cho tôi là tốt.
Seiyria

Nó phải là --msvs-version = 2012
RaduM

Điều này đã làm việc tuyệt vời với cài đặt Windows 7 x64 của tôi! Cảm ơn Microsoft (vì đã bị chê)!
Blairg23

60

Cập nhật v3: https://www.npmjs.com/package/windows-build-tools

cài đặt npm - windows-build-tools

tải xuống và cài đặt Visual C ++ Build Tools 2015, được Microsoft cung cấp miễn phí. Những công cụ này được yêu cầu để biên dịch các mô đun gốc phổ biến. Nó cũng sẽ cài đặt Python 2.7, cấu hình máy của bạn và npm một cách thích hợp.

Cập nhật v2:

node-gyp đã cập nhật readme của họ để bao gồm CÁCH-cho các cửa sổ

Nguyên:

Không cần toàn bộ phòng thu trực quan, bạn chỉ có thể tải xuống các công cụ xây dựng

Công cụ xây dựng của Microsoft 2013: http://www.microsoft.com/en-us/doad/details.aspx?id=40760

chạy cmd để đặt cờ toàn cầu để sử dụng phiên bản 2013:

npm config set msvs_version 2013 --global

sau đó, mọi thứ sẽ trở lại bình thường và quá trình xây dựng lại / nút-gyp của bạn sẽ hoạt động


Công cụ xây dựng không bao gồm Bộ công cụ nền tảng ... thật đáng buồn là dường như không có cách nào để cài đặt Visual Studio :( cũng đọc hướng dẫn cài đặt cho nút-gyp trên windows: github.com/nodejs/node-gyp
Michael K.

cập nhật câu trả lời để bao gồm readme mới từ nút-gyp, cảm ơn @MichaelK.
xúc tác

2
Tôi đã cài đặt VS2015 và chạy lệnh npm config set msvs_version 2015 --globalnày cũng hoạt động
JRulle

Tương tự, cài đặt Microsoft Build Tools 2015 và chạy npm config set msvs_version 2015 --globalcác công việc
Jon Onstott

1
Chạy 'windows-build-tools' như đã nêu ở trên bằng NPM (Trình quản lý gói nút) DID hoạt động với tôi, nhưng chỉ khi chạy nó thông qua Microsoft PowerShell . Đây là một tiện ích Windows được cung cấp bởi Microsoft trong hơn 10 năm. Nó có quyền Quản trị cần thiết để chạy Công cụ xây dựng. Xác định vị trí PowerShell, nhấp chuột phải vào nó và chạy với tư cách Quản trị viên. Lưu ý rằng việc chạy dấu nhắc CMD tiêu chuẩn vì Admin cũng có thể hoạt động, nhưng tôi đã thành công với PowerShell . Công cụ bổ sung và hỗ trợ lệnh giống như UNIX có thể là một phần lý do tại sao nó hoạt động, mặc dù chạy nó với tư cách là Quản trị viên là giải pháp lớn hơn.
Michael M

41

chỉ cần thêm --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

hoặc là

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

Câu trả lời tương tự như trên.
Blairg23

1
Tôi đã trả lời trước, nhìn vào ngày :)
msulhas

21

Tôi gặp vấn đề tương tự khi cố gắng cài đặt gói cho Node.js. Sau một số thông tin chi tiết, tôi đã tìm thấy hướng dẫn này: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-setup

Khi tôi đã làm theo các bước này, tôi có thể sử dụng "cài đặt npm" mà không gặp vấn đề gì.


CẢM ƠN!!! MASSIVE KUDOS ps bạn cũng phải thêm Python vào đường dẫn của mình: stackoverflow.com/questions/4621255/
mẹo

Nếu bạn đã cài đặt Visual Studio thì các câu trả lời được bình chọn hàng đầu có thể hoạt động, tuy nhiên nếu bạn hoàn toàn không có nó thì bạn cần câu trả lời này. Cảm ơn!
JD Smith

Hướng dẫn này là tốt nhất cho đến bây giờ. Không cần thiết, tất cả các vấn đề cơ bản64 này là hoàn toàn không cần thiết và gây phiền nhiễu!
Benedikt

Ồ vâng, đây là những gì tôi cần. Đi bộ tốt nhất tôi đã tìm thấy và nó hoạt động!
Corin

Tôi có một dự án Node.js sử dụng Couchbase SDK cho Node, nó hoạt động tốt trên máy tính làm việc của tôi, có Visual Studio 2008, 2010 và 2012. Tôi muốn thử nghiệm cài đặt cho "người có sở thích" mà không cần bất kỳ bản sao nào của Visual Studio. Tôi đã gỡ cài đặt tất cả các công cụ phát triển và SDK của Microsoft khỏi máy tính ở nhà của tôi và thử các tùy chọn "Express" khác nhau. Chỉ sau khi tôi làm theo các bước được TooTallNate ghi lại, tôi mới có thể xây dựng các nhị phân Couchbase cho Windows, bao gồm cả bước này để khởi động lại hoạt động như một ứng dụng "máy tính để bàn" bằng cách sử dụng NW.js (trước đây là nút-webkit): 'nw-gyp xây dựng lại - -target = 0.12.0 '
Rick Rutt

13

Nhờ @felixrieseberg , bạn chỉ cần cài đặt gói npm của windows-build-tools và bạn đã sẵn sàng để sử dụng.

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

Bạn sẽ không cần phải cài đặt Visual Studio.

Bạn sẽ không cần phải cài đặt Microsoft Build Tools.

Từ repo:

Sau khi cài đặt, npm sẽ tự động thực hiện mô-đun này, tải xuống và cài đặt Visual C ++ Build Tools 2015, được Microsoft cung cấp miễn phí. Những công cụ này được yêu cầu để biên dịch các mô đun gốc phổ biến. Nó cũng sẽ cài đặt Python 2.7, cấu hình máy của bạn và npm một cách thích hợp.

Windows Vista / 7 yêu cầu .NET Framework 4.5.1 (Hiện tại không được cài đặt tự động bởi gói này)

Cả hai cài đặt đều không xung đột, có nghĩa là chúng không gây rối với các cài đặt hiện có của Visual Studio, C ++ Build Tools hoặc Python.


1
Bạn hoàn toàn đúng. Tôi có các phiên bản VS, npm và gyp trong nhiều giờ, nhưng không có .NET 4.5.1 (chính xác) thì hoàn toàn không có cách nào để biên dịch nó. Điều đó cũng giải thích lý do tại sao nó sẽ hoạt động với hầu hết các Cài đặt VS, vì chúng đi kèm với .NET được đóng gói sẵn.
Xan-Kun Clark-Davis

12

trên windows 8, nó hoạt động với tôi bằng cách sử dụng:

npm install -g node-gyp -msvs_version=2012

sau đó

npm install -g restify

1
Tôi không nghĩ rằng gói restify có liên quan gì đến câu hỏi OP, restify chỉ là một trong một số gói bị ảnh hưởng bởi cùng một vấn đề.
adelriosantiago

5

Sau NGÀY đào, một người nào đó trên IRC đề nghị tôi thử sử dụng

Windows 7.1 SDK Command Prompt

Phím tắt (liên kết đến C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Chương trình tập tin \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Tôi nghĩ rằng bạn PHẢI có SDK 7.1 cũ hơn (ngay cả trên Windows 8.1) bởi vì những cái mới hơn sử dụng msbuild.exe thay vì vcbuild.exe, đó là thứ mà nút-gyp muốn mặc dù nó cũ gấp đôi nút tại thời điểm này: /

Khi ở trong dấu nhắc đó, tôi đã phải chạy như sau để có được bối cảnh x86 vì trình biên dịch đã bị lỗi do kiến ​​trúc:

setenv.cmd /Release /x86

THEN Tôi đã có thể chạy thành công các lệnh npm đang cố gắng sử dụng nút-gyp để biên dịch lại mọi thứ.


4

Tôi đã có cùng một isuee và đã làm tất cả các phép thuật ở trên, điều duy nhất đã làm phép thuật cho tôi là từ https://github.com/atom/atom/issues/2435

"Bởi vì --msvs_version = 2013 không được truyền cho nút-gyp khi nó được chạy bởi tập lệnh xây dựng. Đặt biến GYP_MSVS_VERSION = 2013 và nó sẽ hoạt động sau."

Bang! nó đã làm việc


3

Trên Windows Điều này đã giúp tôi: (tín dụng chuyển đến) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp Tôi đã thử MINGW32, nhưng không thành công.

trên cmd.exe

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

1
nếu điều này không thành công với bạn, hãy kiểm tra xem bạn có biến môi trường PYTHON = c: \ Python27 \ python.exe và stackoverflow.com/a/15937635/2873481
Vladimir Vukanac

npm cài đặt -g nút-gyp @ mới nhất?
Alexander Mills

2

Đối với windows 8 64-bit, cài đặt zmq và protobuf, cách sau đây có hiệu quả với tôi: Cài đặt Visual Studio 2012 Trên dòng lệnh:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf

Visual Studio 2012 cũng đi kèm với 'Developer Command Prompt cho VS2012', do đó bạn không cần phải tùy chỉnh PATH biến env của bạn
strider

1

Tôi nghĩ giải pháp là tải xuống cài đặt Microsoft windows sdk cho máy chủ 2008 với .net framework 3.5

hoặc chỉ cần cài đặt Visual studio 2008 .

Vấn đề là các cửa sổ xây dựng nút-gyp thực thi tệp vcbuid.exe và vì một số lý do, nó không thể tìm thấy nó.

Cảm ơn



2
Lý do cho việc không tìm thấy VCBuild là vì nó đã được thay thế bằng MSBuild vào năm 2010, theo codeproject.com/Articles/562386/ trên
UnPlan2ned

Xem câu trả lời của tôi dưới đây. vcbuild.exe là bắt buộc nhưng nhiều biến môi trường phải được đặt và dự án nút-gyp không ghi lại chúng.
rainabba


0

Tôi cũng đã có rất nhiều vấn đề để biên dịch nodejs zmq.

Đối với sự cố với vcbuild.exe, chỉ cần thêm nó vào PATH

Đối với các vấn đề khác, tôi có thể biên dịch chỉ bằng cách sử dụng Windows 7.1 SDK Command Prompt

(Chương trình menu -> Microsoft Windows SDK v7.1 -> Dấu nhắc lệnh SDK Windows 7.1)

Và từ dấu nhắc:

npm install zmq

Đó là hoạt động :)


0

Sau một thời gian dài vật lộn, tôi đã chuyển kiến ​​trúc nút của mình thành x86 và nó hoạt động như một cơ duyên.


1
bạn có thể nói rõ hơn về cách bạn đã chuyển sang x86 không?
Arman Ortega

0

trong cmd đặt đường dẫn Visual Studio tùy thuộc vào phiên bản của bạn là

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

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

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

Trong nút-master (mô-đun nút gốc được tải xuống từ git) chạy vcbuild.bat với quyền quản trị viên. vcbild.bat sẽ tạo ra các phụ thuộc liên quan đến windows và sẽ thêm tên thư mục Phát hành trong nút-master

Một khi nó chạy nó sẽ mất thời gian để xây dựng các tập tin.

Sau đó, trong thư mục có lệnh .gyp sử dụng lệnh

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

điều này sẽ xây dựng tất cả các phụ thuộc.


0

Tôi đã giải quyết vấn đề này trên windows 8 và windows 10 pro với hướng dẫn này. Tôi đã cố gắng rất nhiều lần để giải quyết vấn đề này bằng nhiều giải pháp khác nhau, nhưng chỉ làm việc với tôi với điều này: http://www.serverpals.com/blog/building-USE-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64 Tôi nhận thấy rằng tôi đã không sử dụng nút bấm để điều khiển phiên bản nút như hướng dẫn này, tôi sử dụng NVM và hoạt động tốt, tôi không kiểm tra hướng dẫn này bằng nút bấm. Tôi đã sử dụng nút 5.2.0.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.