Установка npm для некоторых пакетов (sqlite3, socket.io) завершается с ошибкой MSB8020 в Windows 7
При попытке установить некоторые пакеты node.js (в частности sqlite3 и socket.io), используя npm install socket.io
на моей машине Windows 7 с Visual Studio 2012 (а не 2010) у меня были некоторые сбои, которые выглядели так:
C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Platform.targets (35,5): ошибка MSB8020: инструменты сборки для Visual Studio 2010 (Platform Toolset = 'v100') не может быть найден. Для сборки с использованием инструментов сборки v100 щелкните меню "Проект" или щелкните правой кнопкой мыши решение и выберите "Обновить проекты VC++...". Установите Visual Studio 2010 для сборки с использованием инструментов сборки Visual Studio 2010.
4 ответа
Чтобы обойти это на моей машине, я выполнил команду для установки пакета:
npm install socket.io --msvs_version=2012
Я нашел ответ здесь, когда возникла проблема с установкой sqlite3, и она работала и с socket.io.
Это могут быть более постоянные решения для решения проблемы:
Другой вариант - изменить конфигурацию вместо указания msvs_version каждый раз:
npm config set msvs_version 2012
У меня установлены Visual Studio Express 2013 и Visual Studio Community 2015.
Я получал
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]
Причина была в том, что последний Node.js для Windows, загруженный с https://nodejs.org/ содержит старый npm
версия 2 (и старая node-gyp
внутри этого npm
v2).
Мне пришлось обновить внутренний Node.js npm
(который также обновлен node-gyp
):
(open console as an administrator)
cd "C:\Program Files\nodejs"
npm install npm@latest
npm config set msvs_version 2013
Теперь это работает (кажется, что он использует VS 2013 в настоящее время)
TL;DR
Если ты не хочешь node-gyp
чтобы зависеть от установленной версии Visual Studio (или не иметь установленной VS), установите windows-build-tools
(увидеть ниже). Это устранит как ошибку, так и позволит избежать будущих проблем при обновлении установленной версии Visual Studio.
Если вы хотите node-gyp
зависеть от установленной версии Visual Studio, то npm config set msvs_version 2015
, замените свой тег версии вместо 2015
, Допустимые версии тегов: 2015
, 2014
, 2013
, 110
, 100
Исправление с помощью windows-build-tools
Согласно инструкции по установке node-gyp, вы также можете сделать
npm install --global --production windows-build-tools
из ELEVATED командной оболочки
Это установит строго инструменты сборки Microsoft Visual C++ (которые будут использоваться вместо Visual Studio для компиляции), необходимые для node-gyp
и соответственно установить msvs_version
до версии только что установлен.
После установки вы должны убедиться, что msvs_version
установить с помощью windows-build-tools
не был переопределен При выполнении npm config list
, msvs_version
должен появиться под ; globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrc
; если это не так, значение устанавливается windows-build-tools
был переопределен, и переопределенное значение должно быть удалено. npm config delete msvs_version
следует удалить переопределенное значение, а значение, установленное инструментами сборки, должно появиться в разделе глобальной конфигурации.