Подтвердить что ты не робот

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 (платформа Toolset = 'v100') не может быть найден. Чтобы построить с помощью сборки v100 инструментов, либо щелкните меню "Проект", либо щелкните его правой кнопкой мыши, и затем выберите "Обновить проекты VС++...". Установите Visual Studio 2010 на с помощью инструментов сборки Visual Studio 2010.

4b9b3361

Ответ 1

Чтобы обойти это на моем компьютере, я выполнил эту команду для установки пакета:

npm install socket.io --msvs_version=2012

Я нашел ответ здесь, когда возникла проблема с установкой sqlite3, и он также работал с socket.io.

Это могут быть более постоянные решения для устранения проблемы:

  • Установить Visual Studio 2010
  • Обновление внутренней копии npm в более новой версии node -gyp, как описано здесь и здесь (возможно, лучший вариант, хотя я не получил его, но не пытался слишком долго)

Ответ 2

Другой вариант - изменить конфигурацию, а не каждый раз указывать msvs_version:

npm config set msvs_version 2012

Ответ 3

У меня установлены как 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 v2 (и старый node-gyp внутри npm v2).

Мне пришлось обновить Node.js'es internal npm (который также обновил node-gyp):

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

npm config set msvs_version 2013

Теперь он работает (кажется, что он использует VS 2013 в настоящее время)

Ответ 4

TL; DR

Если вы НЕ хотите хотеть node-gyp зависеть от установленной версии Visual Studio (или не устанавливаете VS), установите windows-build-tools (см. ниже). Это устранит и ошибку, и позволит избежать будущих проблем при обновлении установленной версии Visual Studio.

Если вы DO хотите 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 С++ Build Tools (это будет использоваться вместо 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 должен удалить переопределенное значение, а значение, установленное средствами сборки, должно появиться в разделе глобальной конфигурации.