【问题标题】:npm install that requires node-gyp fails on Windows需要 node-gyp 的 npm install 在 Windows 上失败
【发布时间】:2016-05-19 12:01:45
【问题描述】:

我有一个使用 bufferutils 和 utf-8-validate 的 NPM 项目,两者都需要 node-gyp 来安装它们。当我执行npm install 时,出现以下错误:

> 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                       

之前因为没有安装 Python 2.7 而失败,现在是这个。这让我很头疼。我该怎么办?

【问题讨论】:

    标签: node.js npm node-gyp


    【解决方案1】:

    开始为我工作

    对我没有任何作用(安装 msvs_version 2017,2015)

    注意到

    node-gyp错误来自python路径和msvsc路径

    npm config list
    

    输出(设置正确的安装路径和msvs)

    ; cli configs
    metrics-registry = "https://registry.npmjs.org/"
    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\angalware
    ; HOME = C:\Users\balaji
    ; "npm config ls -l" to show all defaults.
    

    设置全局(例如)

    npm config -g set msvs_version 2015
    

    设置本地化(例如)

    npm config  set msvs_version 2015
    

    路径修正

     npm config set python /path/to/executable/python
    

    对于那些还没有安装的人(它安装了msvsc和python)

    npm install -g windows-build-tools
    

    安装后检查上面给出的提示,例如路径和版本

    愉快的编码......

    详细信息已更新 https://stackoverflow.com/a/68630586/11624647

    【讨论】:

      【解决方案2】:

      使用 WSL 对我有用(仅限 Windows 10 用户)

      那些不知道 WSL 只是 windows 中的 Linux 命令 shell 的人

      只需按照本指南安装 WSL https://wiki.ubuntu.com/WSL 并使用命令安装 nodejs 和 npm my

      sudo apt-get install nodejs npm -y

      【讨论】:

        【解决方案3】:

        在这里找到解决方案: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
        

        【讨论】:

          【解决方案4】:

          我在其他任何地方都找不到我的解决方案,所以想分享一下。

          在 Windows 10 上运行节点 v10.16.3

          安装 windows-build-tools -

          npm install --global --production windows-build-tools
          

          在 C:\Users[your username].npmrc 中明确设置 python 路径 - 在我的例子中,是这样的:

          python=c:\users\akeel\.windows-build-tools\python27\python
          

          【讨论】:

            【解决方案5】:

            从旧版本的节点更新到节点 v12 时,我遇到了这个问题。 bcrypt 库存在一个特殊问题。我刚刚卸载了 v12 并安装了 v10,一切正常。

            【讨论】:

              【解决方案6】:

              下面的答案代表手动安装,但还有一种更简单的方法:自动安装。

              以管理员身份打开 Powershell 并运行 npm install -g windows-build-tools。

              安装需要时间,但它对我来说就像一个魅力!

              【讨论】:

              • 警告这种方法强制重启了我的机器,我有未保存的文件,我丢失了。 Windows 8.1 编辑:天哪,谢谢 vscode,当我打开文件夹时它仍然存在。
              • 如果安装过程卡在某个地方,请使用 4.0.0 版本而不是 npm install --global --production windows-build-tools@4.0.0。归功于:github.com/felixrieseberg/windows-build-tools/issues/…
              【解决方案7】:

              我在 GitHub 上找到了这个 brilliant solution:

              1. 您的操作系统必须是 Windows
              2. 通过在控制台中写入python --version 检查python 是否在您的路径中。如果没有那么
              3. 下载python 2.7(我推荐chocolatey (choco install python2 -y))并将python.exe 添加到您的PATH 变量中。
              4. 您不是在 Windows 7 上吗?跳过 5 和 6。
              5. Check that you have .NET 4.5.1+ installed。如果没有那么
              6. Download and install .NET 4.5.1(.NET 4.5.2 也可以正常工作)
              7. 下载Microsoft Visual C++ Build Tools 2015 Technical Preview
              8. 使用自定义安装。如果尚未安装 Windows 8.1 SDK。显然,您使用的操作系统无关紧要。您只需要 Windows 8.1 SDK。
              9. 将 npm 配置变量 msvs_version 设置为 2015:npm config -g set msvs_version 2015
              10. 在任何项目中使用 node-gyp 作为依赖项执行 npm i,而不会看到奇怪的错误消息

              我的噩梦已经过去了!

              【讨论】:

              • 这就是 windows 用户对 node-gyp rebuild 不满意的原因。辉煌的解决方案本身太大了。对 nodegyp 废话不满意
              • 构建工具可以在这里找到:microsoft.com/en-us/download/details.aspx?id=48159
              • 对我来说(Windows 10 节点 6.2.0),npm config -g set msvs_version 2013 工作时 2015 和 2012 没有(我安装了 VS 2013、2012 和 2015)
              猜你喜欢
              • 2022-01-15
              • 2020-09-11
              • 2012-08-20
              • 1970-01-01
              • 2022-01-16
              • 2015-03-28
              • 1970-01-01
              • 2019-04-05
              • 2014-03-20
              相关资源
              最近更新 更多