为什么在Mac OSX上进行node-gyp重建失败El Capitan

时间:2016-06-27 15:56:24

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

我最近买了一台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

10 个答案:

答案 0 :(得分:13)

这个也是我的一点点。有几个不同的解决方案,其中只有一个适合我。

首先,确保安装了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。

希望有所帮助!

答案 1 :(得分:1)

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

rm -rf node_modules
nvm use 6
npm install

答案 2 :(得分:1)

如果您为python使用virtualenv,则需要将其停用或指向npm以使用OS自身的python 2安装来使node-gyp正常工作。


编辑:

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

答案 3 :(得分:1)

升级macOS后我遇到了相同的问题

更新酿造

brew update

更新X代码

xcode-select --install

如果需要,您可能必须将路径重置为X代码

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

答案 4 :(得分:0)

尝试了许多解决方案后,对我有用的是卸载节点n,npm和nvm。重新安装nvm并与其一起安装节点。我正在关注以下答案:

How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)

痛苦而漫长,但有效。

答案 5 :(得分:0)

如果要将Node升级到10或更高版本,则必须在package.json中找到与Node 10无关的依赖关系,并将这些软件包升级到较新的稳定版本,然后进行构建(npm / yarn安装)。

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

尝试查看您的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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

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