【问题标题】:Why is node-gyp rebuild failing on Mac OSX El Capitan为什么在 Mac OSX El Capitan 上 node-gyp 重建失败
【发布时间】:2016-10-29 17:29:36
【问题描述】:

我最近买了一台 Mac,它使用 Mac OSX El Capitan v10.11.4。使用自制软件安装节点,并使用节点 v6.2.2 和 npm v3.9.5。我在 npm install 期间遇到 bcrypt 错误,我认为这是源自 node-gyp rebuild 错误。我最近还下载了 xcode-select(版本 2343)和 xcode(7.3.1)(按此顺序)。

这是我运行npm install 后的完整错误输出:

https://gist.github.com/varunjayaraman/5734af617d616437cd5b3456b20bc503

不知道出了什么问题。我来自 linux 领域,并且倾向于警惕自己不从源代码安装,所以也许这就是这些问题的原因?无论如何,任何建议都会非常感激。我也看到其他人出现了这个错误,但他们的解决方案似乎都不起作用(当我输入 xcode-select --print-path 时,我得到 /Applications/Xcode.app/Contents/Developer

【问题讨论】:

  • 我经常看到出现的问题与 Node 的 Homebrew 安装有关,这些问题可以通过使用 official installer 解决。可能值得一试。

标签: node.js osx-elcapitan node-gyp


【解决方案1】:

每当我将 OSX 升级到更新版本时,我都会遇到同样的问题。 这是我每次解决它的方法:

sudo rm -rf  /Library/Developer/CommandLineTools
xcode-select --install

就是这样。现在下次你执行 npm install 或 yarn 时它会起作用。

PS:有时您将无法通过 Xcode-select 安装命令行工具,例如,如果您处于 beta 版本。 在这种情况下,您应该可以从这里手动安装它:https://developer.apple.com/download/more/

【讨论】:

  • 刚刚更新到 10.15.4 并且遇到了同样的问题 - 我用谷歌搜索并再次找到了我自己的答案......太棒了。
  • 我在 Big Sur 上遇到问题,此修复似乎不起作用。你有什么问题吗?也许我需要更新 python 或其他原因,因为我在错误跟踪中看到它引用 python?
  • 我也在 BigSur - 我遇到了同样的问题并且同样的修复工作。虽然当我更新到最新的 beta 版本时它又回来了几次。你应该再试一次。我不确定python是否相关。
  • 是的,本周我们有多个开发人员处理这个问题,所以我们刚刚从我们的项目中删除了 bcrypt,这是唯一使用 node-gyp 的包。
【解决方案2】:

这个也咬了我一口。有几种不同的解决方案,其中只有一种对我有用。

首先,确保您已安装 XCode 命令行工具,正如他们在 npm page 上所说的那样。

1) 最简单的解决方案当然是行不通的(尽管它看起来对某些人有用),就是删除~/.node-gyp 目录。所以不妨试一试,同时删除你的node_modules 目录并再做一个npm install

2) 尝试卸载 node-gyp 并重新安装:

sudo npm uninstall node-gyp -g
npm uninstall node-gyp
npm install

3) 但是诀窍是给定in a node-gyp issue on github 的解决方案,您必须在其中安装另一个版本的节点并以这种方式进行 npm 安装。这比听起来容易,但它很恶心:

sudo npm cache clean -f
sudo npm install -g n
sudo n 4.4.5
sudo npm install npm -g
sudo npm uninstall node-gyp -g

然后尝试运行 npm install。

希望有帮助!

【讨论】:

  • 你完全摇滚......唯一接近工作的东西!谢谢
  • 为什么这个答案不是正确的,这很有效
【解决方案3】:

如果node_modules 缓存是使用最新版本的 Node 构建的,您可能需要删除缓存,还原,然后重新安装包:

rm -rf node_modules
nvm use 6
npm install

【讨论】:

    【解决方案4】:

    升级 macOS 后遇到同样的问题

    更新 brew

    brew update
    

    更新 X 代码

    xcode-select --install
    

    如果需要,您可能需要重置 X-Code 的路径

    xcode-select --switch /Applications/Xcode.app
    xcode-select --switch /Library/Developer/CommandLineTools
    

    【讨论】:

      【解决方案5】:

      我有一个简单的解决方案。如果安装了 xcode-sellect,请尝试运行 sudo xcode-select --reset

      【讨论】:

        【解决方案6】:

        如果您在 python 中使用 virtualenv,则需要将其停用或指向 npm 以使用操作系统自己的 python 2 安装,以便 node-gyp 工作。


        编辑:

        几天前又遇到了同样的错误。这一次 node-gyp 的问题不是。显然,我正在安装的模块依赖于非常旧版本的 node-gyp (v1),独立于系统版本 (v3.8),我的 node (v10) 版本不再支持。由于我不再需要该模块,因此我将其删除。或者,您可能希望升级/降级/更换有问题的模块,或升级/降级您的节点。对于 OP 而言,违规模块是 bcrypt@0.8.5。

        【讨论】:

          【解决方案7】:

          如果你想将 Node 升级到 10 或更高版本,你必须在 package.json 中找到与 Node 10 过时的依赖项并将这些包升级到更新的稳定版本,然后构建(npm/yarn install)。

          【讨论】:

            【解决方案8】:

            尝试查看您的 python 安装。

            我在https://github.com/nodejs/node-gyp/issues/489#issuecomment-431447692 的讨论中找到了提示。

            我的 MacBook Pro 上的 python 由 Homebrew 管理,它将二进制文件安装到

            /usr/local/bin

            所以我在终端做了以下操作:

            >$: npm config set python /usr/local/bin/python
            >$: rm -rf node_modules
            >$: npm i
            

            【讨论】:

              【解决方案9】:

              我遇到了类似的问题,运行下面的命令为我解决了这个问题

               Install Xcode // if you dont have it installed already
               Run sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
              

              【讨论】:

                猜你喜欢
                • 2016-12-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-04-05
                • 2023-03-29
                • 2016-11-03
                • 2016-04-08
                相关资源
                最近更新 更多