npm install that requires node-gyp fails on Windows

随声附和 提交于 2019-11-30 06:16:23

问题


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?


回答1:


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 !




回答2:


I found this brilliant solution on GitHub:

  1. Your OS MUST be Windows
  2. Check that python is in your path by writting python --version in the console. If not then
  3. Download python 2.7 (I recommend chocolatey (choco install python2 -y)) and add python.exe to your PATH variable.
  4. Aren't you on Windows 7? Skip 5 and 6.
  5. Check that you have .NET 4.5.1+ installed. If not then
  6. Download and install .NET 4.5.1 (.NET 4.5.2 will also work just fine)
  7. Download Microsoft Visual C++ Build Tools 2015 Technical Preview
  8. 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.
  9. Set the npm config variable msvs_version to 2015: npm config -g set msvs_version 2015
  10. Do npm i in what-ever project with node-gyp as a dependency without seeing weird error messages

My nightmares are gone!




回答3:


After wasting many hours over several days trying to install ZeroMQ on Winturds 7 and 10 (including the ridiculous and completely useless installation of .NET and Visual Studio), it was actually easier to create an Ubuntu USB boot disc and install node and ZeroMQ. Now I can actually do productive work.




回答4:


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.




回答5:


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



回答6:


Found a solution here: https://spin.atomicobject.com/2019/03/27/node-gyp-windows/

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


来源:https://stackoverflow.com/questions/35293117/npm-install-that-requires-node-gyp-fails-on-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!