Npm install, требующая node -gyp не работает в Windows
У меня есть проект NPM, в котором используются bufferutils
и utf-8-validate
, требующие node -gyp для их установки. Когда я делаю npm install
, я получаю следующую ошибку:
> [email protected] install C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil
> node-gyp rebuild
C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil {git}{hg}
{lamb} if not defined npm_config_node_gyp (node "C:\Users\Marek\AppData\Roaming\npm\node_modules\npm\bin\node-g
yp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "" rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
bufferutil.cc
C:\Users\Marek\.node-gyp\5.1.1\include\node\v8.h(18): fatal error C1083: Cannot open include file: 'stddef.h':
No such file or directory [C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil\build\bufferutil.vcx
proj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Users\Marek\AppData\Roaming\npm\node_modules\npm\node_modules\nod
e-gyp\lib\build.js:276:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Windows_NT 10.0.10586
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Marek\\AppData\\Roaming\\npm\\node_modules\\
npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil
gyp ERR! node -v v5.1.1
gyp ERR! node-gyp -v v3.2.1
gyp ERR! not ok
npm WARN install:[email protected] [email protected] install: `node-gyp rebuild`
npm WARN install:[email protected] Exit status 1
Раньше он терпел неудачу из-за того, что Python 2.7 не установлен, теперь это так. Это вызывает у меня головные боли. Что мне делать с этим?
Ответы
Ответ 1
Ответ ниже означает ручную установку, но есть гораздо более простой способ: автоматическая установка.
Откройте Powershell от имени администратора и запустите npm install -g windows-build-tools
.
Установка занимает много времени, но для меня это сработало!
Ответ 2
Я нашел это блестящее решение на GitHub:
- Ваша ОС ДОЛЖНА быть Windows
- Проверьте, что Python находится на вашем пути, написав
python --version
в консоли. Если нет, то
- Загрузите python 2.7 (я рекомендую chocolatey (
choco install python2 -y
)) и добавьте python.exe
в переменную PATH.
- Разве вы не на Windows 7? Пропустите 5 и 6.
- Убедитесь, что у вас установлен .NET 4.5. 1+. Если нет, то
- Загрузите и установите .NET 4.5.1 (.NET 4.5.2 также будет отлично работать)
- Загрузите Microsoft Visual C++ Build Tools 2015 Technical Preview
-
Используйте выборочную установку. Установите Windows 8.1 SDK, если вы еще этого не сделали. Видимо, не имеет значения, на какой ОС вы работаете. Вам просто нужен Windows 8.1 SDK.
- Установите для переменной конфигурации npm msvs_version значение 2015:
npm config -g set msvs_version 2015
- Выполните
npm i
в каком-либо проекте с node-gyp в качестве зависимости, не видя странных сообщений об ошибках
Мои ночные кошмары ушли!
Ответ 3
Потратив много часов в течение нескольких дней, пытаясь установить ZeroMQ на Winturds 7 и 10 (включая нелепую и совершенно бесполезную установку .NET и Visual Studio), на самом деле было проще создать загрузочный диск Ubuntu USB и установить узел и ZeroMQ. Теперь я действительно могу выполнять продуктивную работу.
Ответ 4
У меня была эта проблема при обновлении с более старой версии узла до узла v12. Была определенная проблема с библиотекой bcrypt. Я просто удалил v12 и установил v10 и все заработало.
Ответ 5
Я не мог найти свое решение где-либо еще, поэтому решил поделиться.
Запуск узла v10.16.3 в Windows 10
Установить windows-build-tools -
npm install --global --production windows-build-tools
Установите путь к Python явно в C:\Users [ваше имя пользователя].npmrc - В моем случае это примерно так:
python=c:\users\akeel\.windows-build-tools\python27\python
Ответ 6
Нашел решение здесь: https://spin.atomicobject.com/2019/03/27/node-gyp-windows/
Мне пришлось установить Windows Build Tools 2015, а затем настроить Node для его использования.
Вот команды, которые я использовал:
npm install --global --production windows-build-tools --vs2015
npm config set msvs_version 2015 –global