使用node-gyp进行NPM安装失败

时间:2015-11-24 14:41:34

标签: javascript node.js npm node-gyp

我们在项目中运行" npm install" 时遇到问题。无法找到某个文件:

*

它似乎来自 node-gyp 模块:

  

C:\程序   文件\的NodeJS \ node_modules \故宫\ node_modules \节点GYP的\ src \ win_delay_lo   ad_hook.c(13):

     

致命错误C1083:无法打开包含文件:' windows.h':没有成功   文件或目录   [d:\ NGS-前端-下\ node_modules \浏览器同步\ node_module   小号\ socket.io \ node_modules \ engine.io \ node_modules \ WS \ node_modules \ bufferutil \ BUIL   d \ binding.sln]

这个节点gyp似乎是我们痛苦的永无止境的源头。起初它抱怨它需要python,所以我们安装了它。然后它抱怨它需要VCBuild,我们安装(使用.NET 2.0 SDK),现在我们有这个错误。这几乎就像错误变得越来越模糊,感觉我们正在走错路。

奇怪的是,我们团队中的其他人在运行npm-install时没有任何问题。

完整错误如下所示:

  

C:\程序   文件\的NodeJS \ node_modules \故宫\ node_modules \节点GYP的\ src \ win_delay_lo   ad_hook.c(13):

     

致命错误C1083:无法打开包含文件:' windows.h':没有成功   文件或目录   [d:\ NGS-前端-下\ node_modules \浏览器同步\ node_module   小号\ socket.io \ node_modules \ engine.io \ node_modules \ WS \ node_modules \ bufferutil \ BUIL   d \ binding.sln]

     

gyp ERR!构建错误gyp ERR!堆栈错误:   fatal error C1083: Cannot open include file: 'windows.h' 失败了   退出代码:ChildProcess.onExit(C:\ Program)的1个堆栈   文件\的NodeJS \ node_modules \故宫\节点   _modules \ node-gyp \ lib \ build.js:270:23)gyp ERR!堆栈在emitTwo(events.js:87:13)gyp ERR!在ChildProcess.emit堆栈   (events.js:172:7)gyp ERR!堆栈在   Process.ChildProcess._handle.onexit(internal / child_proces   s.js:200:12)gyp ERR!系统Windows_NT 6.1.7601 gyp ERR!命令   " C:\ Program Files \ nodejs \ node.exe" " C:\ Program Files \ nodej   小号\ node_modules \ NPM \ node_modules \节点-GYP \ BIN \节点gyp.js"   "重建" gyp ERR! CWD   d:\ NGS-前端,未来\ node_modules \浏览器同步\ node_modules \插座。   io \ node_modules \ engine.io \ node_modules \ ws \ node_modules \ bufferutil gyp   呃! node -v v4.2.2 gyp ERR! node-gyp -v v3.0.3 gyp ERR!不行,没关系   WARN可选dep失败,继续utf-8-validate@1.2.1

     
    

gifsicle@3.0.3 postinstall D:\ ngs-frontend-next \ node_modules \ gulp-imagemin \ nod     e_modules \ imagemin \ node_modules \ imagemin-gifsicle \ node_modules \ gifsicle     node lib / install.js

  

Out pacakge.json 看起来像这样:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

13 个答案:

答案 0 :(得分:12)

错误消息对我造成了混乱,并没有帮助我完全解决错误。

README.md项目的node-gyp可以更好地列出Unix,Max OS X和 Windows 的安装说明。

Windows 系统中,您可以使用选项1或选项2,但主要是您需要安装Visual C++ Build Tools

以下引用来自 Windows 安装部分:

  
          
  • 在Windows上:         
                
    • Visual C ++构建环境:           
                    
      • 选项1:使用“默认安装”选项安装Visual C ++生成工具。
      •             
      • 选项2:安装Visual Studio 2015(或修改现有安装)并在安装过程中选择 Visual C ++的通用工具。这也适用于免费的社区和Express for Desktop版本。
      •           

                [仅限Windows Vista / 7]需要.NET Framework 4.5.1           
    •           
    • 安装Python 2.7(不支持 v3.x.x ),并运行
      npm config set python python2.7
      (或参阅下面有关指定正确的Python版本和路径的进一步说明。)
    •           
    • 启动cmd,
      npm config set msvs_version 2015
    •         
          
  •     
     

如果上述步骤对您不起作用,请访问Microsoft的Node.js Windows指南以获取更多提示。

Python配置的常用说明:

  

如果您安装了多个Python版本,则可以通过设置'--python'变量来识别node-gyp使用的Python版本:

$ node-gyp --python /path/to/python2.7
  

如果通过npm调用node-gyp并且你安装了多个版本的Python,那么你可以将npm的'python'配置键设置为适当的值:

$ npm config set python /path/to/executable/python2.7

按照上述说明成功配置了我的系统。

系统信息

λ ver

Microsoft Windows [Version 6.1.7601]

λ node -v
v6.2.0
λ npm -v
3.9.2

相关工具/文章的链接:

Visual C++ Build Tools

Visual Studio 2015

.NET Framework 4.5.1

Python 2.7

Microsoft's Node.js Guidelines for Windows

答案 1 :(得分:5)

尝试使用--force option重新安装:

npm install --force

如果这不起作用,请尝试全局更新npm:

npm update -g npm 

并使用--force选项重试。

答案 2 :(得分:3)

我最后一次看到类似的错误是因为我使用了错误版本的npm和/或node作为我的一个依赖项。尝试升级这些并重试。

再次尝试删除node_modules目录之前。

您可能需要调查您的依赖项所需的npmnode版本。您可以尝试所有依赖项的最新版本,node和npm。

检查您的同事使用的版本。

您使用的操作系统是什么?这可能会产生影响,因为CLANG的版本可能会有所不同。

答案 3 :(得分:3)

  1. 安装VC ++ Build Tools Technical Preview [仅限Windows 7]需要.NET Framework 4.5.1

  2. 安装Python 2.7,并将其添加到您的PATH,npm config set python python2.7

  3. 启动cmd,npm config set msvs_version 2015 --global(这不是每次npm install [包名] --msvs_version = 2015。)

  4. 4.很多npm安装:tada:

答案 4 :(得分:2)

我尝试了上述所有解决方案,但没有一个奏效。我的问题是我必须删除根目录中的一些文件:

package-lock.jsonyarn.lockyarn-error.log

删除这些文件后,我运行:

npm cache clean --force

然后我运行命令:

npm install

错误消失了

答案 5 :(得分:1)

为此解决了它(OS X):

    rm -rf  ~/.node_gyp and
    sudo npm install -g node-gyp@3.4.0
    cd /usr/local/lib sudo ln -s ../../lib/libSystem.B.dylib libgcc_s.10.5.dylib 
    brew install gcc
    npm install

答案 6 :(得分:1)

在此处发布我的解决方案,以防任何像我这样的人使用 Windows 10 在安装许多Microsoft关联的构建工具后仍然出现错误。

您所需要的只是:

  

Windows 10 64位

     

python 2.7.x

     

Visual Studio 2013

我之前尝试过Visual Studio 2015,但它根本不起作用。

  1. 首先,我卸载所有与Microsoft相关的构建工具。 (如果您之前没有安装任何试图解决此问题的任何内容,请跳过此步骤。)

  2. 安装Visual Studio 2013。

  3. 配置npm为@Sourav说:

  4.   

    配置python:

    npm config set python /path/to/python2.7
    
         

    配置msvs_version:

    npm config set msvs_version 2013
    

    运行npm install或发生此错误的npm命令。这个对我有用!

    顺便说一下,此解决方案来自here

答案 7 :(得分:1)

基于 node-gyp自述文件,更新npm <div class="container"> <h1> A home is made of <p><i>hopes</i> and <i>dreams</i></p> <p>Let us <i>inspire</i> you to build the perfect home!</p> </h1> <br> </div> <div class="buttons-row"> <a href="/login " class="btn grad1" style="margin-right:20px; font-size:20px; "><b>{{ __('LOGIN') }}</b></a> <a href="/register" class="btn grad1" style="margin-left:20px; font-size:20px;"><b>{{ __('SIGN UP') }}</b></a> </div>,并将引入新版本的node-gyp。

提示:如果您在 windows 上,请从提升的PowerShell或CMD.exe(以管理员身份运行)中执行npm i npm -g

答案 8 :(得分:0)

对于Windows 8或10:

假设已经安装了node和npm。

我的节点和npm版本(在撰写本答案时):

节点:8.9.4

npm:5.6.0

  1. 首先安装python 2.x

  2. 确保路径

  3. 安装 Visual Studio Installer

  4. 安装后,运行

  5. 将打开一个新界面,您可以在其中选择各种选项。
  6. 现在从可用选项中选择 Visual Studio 2017构建工具并进行安装。您不需要安装Visual Studio。
  7. enter image description here 安装后它应该可以正常工作。

答案 9 :(得分:0)

嘿,请尝试安装windows build tools(全局npm软件包)

这将解决您的问题:-) 之后,您应该可以使用npm install命令。

答案 10 :(得分:0)

我在我的项目中遇到了类似的问题。就我而言,删除 package-lock.json 文件并让它重新创建有帮助。

答案 11 :(得分:0)

如果您使用“node-sass”,请将其升级到版本 5.0.0,确保您已安装构建工具 2017 和 Python 3,并在 npm install 之前发出这些命令

npm config set msvs_version 2017

npm config set python npm config set python C:\Users\username\AppData\Local\Programs\Python\Python39\python.exe

答案 12 :(得分:0)

我刚跑

> yarn install

它奏效了。