Npm Install That Requires Node-Gyp Fails on Windows
I Have a Npm Project That Uses Bufferutils and Utf-8-Validate, Both Requiring Node-Gyp to Install Them. When I Do Npm Install, I Get Following Error: >...
I have a NPM project that uses bufferutils and utf-8-validate, both requiring node-gyp to install them. When I do npm install, I get following error:
> bufferutil@1.2.1 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:bufferutil@1.2.1 bufferutil@1.2.1 install: `node-gyp rebuild`
npm WARN install:bufferutil@1.2.1 Exit status 1
Previously it failed because of Python 2.7 not installed, now it is this. It's causing me headaches. What should I do about this?
7 Answers
The answer below stands for a manual installation, but there is a much simpler way : the automatic install.
Open Powershell as admin and run npm install -g windows-build-tools.
The install takes time but it worked like a charm for me !
I found this brilliant solution on GitHub:
- Your OS MUST be Windows
- Check that python is in your path by writting
python --versionin the console. If not then - Download python 2.7 (I recommend chocolatey (
choco install python2 -y)) and addpython.exeto your PATH variable. - Aren't you on Windows 7? Skip 5 and 6.
- Check that you have .NET 4.5.1+ installed. If not then
- Download and install .NET 4.5.1 (.NET 4.5.2 will also work just fine)
- Download Microsoft Visual C++ Build Tools 2015 Technical Preview
- Use custom install. Install the Windows 8.1 SDK if you haven't already. Apparently, it doesn't matter what OS you're on. You just need the Windows 8.1 SDK.
- Set the npm config variable msvs_version to 2015:
npm config -g set msvs_version 2015 - Do
npm iin what-ever project with node-gyp as a dependency without seeing weird error messages
My nightmares are gone!
I couldn't find my solution anywhere else, so thought I'd share.
Running node v10.16.3 on Windows 10
Install windows-build-tools -
npm install --global --production windows-build-tools
Set the python path explicitly in C:\Users[your username].npmrc - In my case, this is like so:
python=c:\users\akeel\.windows-build-tools\python27\python
Started Working For Me
Nothing work for me (installed msvs_version 2017,2015)
Noticed
node-gyp error comes from python path and msvsc path
npm config list
Output (set correct installed path and msvs)
; cli configs
metrics-registry = ""
scope = ""
user-agent = "npm/6.12.0 node/v12.9.0 win32 ia32"
; userconfig C:\Users\balaji\.npmrc
init-author-name = "Balaji"
init-license = "MIT"
msvs_version = "2017"
node_gyp = "C:\\Users\\balaji\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js"
python = "C:\\Users\\balaji\\.windows-build-tools\\python27/python.exe"
; globalconfig C:\Users\balaji\AppData\Roaming\npm\etc\npmrc
; builtin config undefined
prefix = "C:\\Users\\balaji\\AppData\\Roaming\\npm"
; node bin location = C:\Program Files (x86)\nodejs\node.exe
; cwd = G:\all clients project\2020\anware
; HOME = C:\Users\balaji
; "npm config ls -l" to show all defaults.
To Set globaly(eg)
npm config -g set msvs_version 2015
To Set localy (eg)
npm config set msvs_version 2015
Path correction
npm config set python /path/to/executable/python
for those who Not installed yet(it install msvsc and python)
npm install -g windows-build-tools
after install check above givn tips such as path and version everything
happy coding....
detail info updated
I was having this issue when updating from an older version of node to node v12. There was a particular issue with bcrypt library. I just uninstalled v12 and installed v10 and everything worked.
Found a solution here:
I had to install Windows Build Tools 2015 and then set Node to use it.
Here are the commands I've used:
npm install --global --production windows-build-tools --vs2015
npm config set msvs_version 2015 –global
Using WSL works for me (windows 10 users only)
those who dont know what WSL is simply Linux command shell in windows
just follow this guide to install WSL and install nodejs and npm my using commands
sudo apt-get install nodejs npm -y