2013-01-06 14 views
46

Podczas próby zainstalowania niektórych pakietów node.js (w szczególności sqlite3 i socket.io) przy użyciu npm install socket.io na moim komputerze z systemem Windows 7 za pomocą programu Visual Studio 2012 (a nie 2010) miałem kilka niepowodzeń, które wyglądały tak:Instalacja npm dla niektórych pakietów (sqlite3, socket.io) kończy się niepowodzeniem z błędem MSB8020 na Windows 7

C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Platform.targets (35,5): błąd MSB8020: Nie można znaleźć narzędzi kompilacji dla Visual Studio 2010 (platforma Toolset = 'v100'). Aby zbudować za pomocą narzędzi v100 build , kliknij menu Projekt lub kliknij prawym przyciskiem myszy rozwiązanie, a następnie , a następnie wybierz opcję "Aktualizuj projekty VC++ ...". Zainstaluj Visual Studio 2010 na kompilacja za pomocą narzędzi kompilacji Visual Studio 2010.

Odpowiedz

82

Aby obejść ten problem na moim komputerze zrobiłem tego polecenia, aby zainstalować pakiet:

npm install socket.io --msvs_version=2012

Znalazłem odpowiedź here gdy mający problem z zainstalowaniem sqlite3 i pracował z socket.io także.

Mogą być bardziej trwałe rozwiązania, aby rozwiązać problem:

  1. Install Visual Studio 2010
  2. Aktualizacja KMP wewnętrzną kopię do nowszej wersji węzła-Gyp jak opisano here i here (prawdopodobnie lepiej opcja, chociaż nie działałem, ale nie próbowałem zbyt długo)
+0

Tak, że pracował dla mnie, choć miałem również do aktualizacji wewnętrznego węzła-Gyp ta będzie również działać na mongojs i sporo innych problemów podczas korzystania vs2012. – Idistic

+1

Dzięki. Zmarnowałem godziny, próbując dowiedzieć się, co jest nie tak. – Joe

+0

pracował idealnie, niezły – Shuliyey

75

Inną opcją jest zmiana konfiguracji zamiast podawania msvs_version za każdym razem:

+1

Dziękujemy! Wróciłem tutaj, żeby sprawdzić, czy ktoś mógł to powiedzieć. Zmęczyłem się dodawaniem przełącznika za każdym razem. – Krummelz

+0

To działało dla mnie podczas próby instalacji kontekstify w VS2013. –

+7

Mam zainstalowany VS 2013 i dlatego użyłem tego: 'zestaw konfiguracji npm msvs_version 2013' –

2

Mam zainstalowane zarówno Visual Studio Express 2013, jak i Visual Studio Community 2015.

byłem coraz C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install v140 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Upgrade Solution...". [G:\work\cinema\node_modules\engine.io\node_modules\bufferutil\build\bufferutil.vcxproj]

Powodem było to, że ostatnie node.js dla Windows pobrać z https://nodejs.org zawiera starą npm v2 (i stare node-gyp wewnątrz tego npm v2).

musiałem zaktualizować Node.js'es wewnętrzny npm (który również zaktualizowane node-gyp):

(open console as an administrator) 
cd "C:\Program Files\nodejs" 
npm install [email protected] 

npm config set msvs_version 2013 

Teraz działa (wydaje się, że to za pomocą VS 2013 do chwili obecnej)

+0

zestaw konfiguracyjny npm msvs_version 2015 działał! wersje wcześniejsze wersje nie. –

+1

Mam zainstalowane VS 2015 i Node.js 5.1.1. Ustawienie 'npm config set msvs_version 2015' nie rozwiązało problemu dla mnie. Moja poprawka polegała na stworzeniu dowiązania symbolicznego do ścieżki, której nie można znaleźć na przykładowej instalacji (npm error MSB4019: Zaimportowany projekt "C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp. Default.props "nie został znaleziony). Otwórz wiersz polecenia i wpisz: 'cd C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0', a następnie' mklink/d V110 V140'. – reverentgeek

0

TL; DR

Jeśli ty nIE chcą node-gyp zależy od zainstalowanej wersji programu Visual Studio (lub nie masz zainstalowanego VS), zainstalować windows-build-tools (patrz być Niska). Pozwoli to wyeliminować zarówno błąd, jak i uniknąć przyszłych problemów podczas aktualizowania zainstalowanej wersji programu Visual Studio.

Jeśli robisz chcą node-gyp zależy od zainstalowanej wersji programu Visual Studio, a następnie npm config set msvs_version 2015, zastąpić tag wersji zamiast 2015. Poprawne wersje tagi: 2015, 2014, 2013, 110, 100


Mocowanie za pomocą windows-build-tools

Per na node-gyp installation instructions, można również zrobić

npm install --global --production windows-build-tools z podniesione uprawnienia skorupy

To zainstaluje ściśle Microsoft Visual C++ Budowanie Tools (ten będzie używany zamiast Visual Studio dla kompilacji) są wymagane przez node-gyp i odpowiednio ustawić msvs_version wersji tylko zainstalowany.

Po zainstalowaniu należy sprawdzić, czy msvs_version ustawiony przez windows-build-tools nie został nadpisany. Podczas wykonywania npm config list, msvs_version powinien pojawić się pod ; globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrc; jeśli nie, wartość ustawiona przez windows-build-tools została zastąpiona, a zastąpiona wartość powinna zostać usunięta. npm config delete msvs_version powinien usunąć zastąpioną wartość, a ta ustawiona przez narzędzia kompilacji powinna pojawić się w sekcji globalnej konfiguracji.

Powiązane problemy