节点 6:在 macOS 上为 hiredis 重建节点 gyp 失败



在macOS(Mojave(上运行Node 6.11.1项目的yarn install时,hiredisnode-gyp rebuild失败:

XCode 命令行工具已通过sudo xcode-select --install安装。

节点通过nvm安装。

error /Users/alexzeitler/src/some-project/node_modules/hiredis: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments:
Directory: /Users/alexzeitler/src/some-project/node_modules/hiredis
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@3.4.0
gyp info using node@6.11.1 | darwin | x64
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp info spawn /usr/bin/python
gyp info spawn args [ '/Users/alexzeitler/.nvm/versions/node/v6.11.1/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/alexzeitler/src/some-project/node_modules/hiredis/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/alexzeitler/.nvm/versions/node/v6.11.1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/alexzeitler/.node-gyp/6.11.1/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/Users/alexzeitler/.node-gyp/6.11.1',
gyp info spawn args   '-Dnode_gyp_dir=/Users/alexzeitler/.nvm/versions/node/v6.11.1/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=/Users/alexzeitler/src/some-project/node_modules/hiredis',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
CC(target) Release/obj.target/hiredis-c/deps/hiredis/sds.o
CC(target) Release/obj.target/hiredis-c/deps/hiredis/read.o
LIBTOOL-STATIC Release/hiredis-c.a
CXX(target) Release/obj.target/hiredis/src/hiredis.o
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
In file included from ../src/hiredis.cc:1:
In file included from ../src/reader.h:1:
In file included from ../../nan/nan.h:51:
In file included from /Users/alexzeitler/.node-gyp/6.11.1/include/node/node.h:42:
/Users/alexzeitler/.node-gyp/6.11.1/include/node/v8.h:21:10: fatal error: 'utility' file not found
#include <utility>
^~~~~~~~~
1 warning and 1 error generated.
make: *** [Release/obj.target/hiredis/src/hiredis.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/alexzeitler/.nvm/versions/node/v6.11.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Darwin 18.0.0
gyp ERR! command "/Users/alexzeitler/.nvm/versions/node/v6.11.1/bin/node" "/Users/alexzeitler/.nvm/versions/node/v6.11.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/alexzeitler/src/some-project/node_modules/hiredis
gyp ERR! node -v v6.11.1
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

更新:通过nvm使用节点 8.11.1 一切正常(但在这个特定项目中还不能迁移到 8.11.1(。

这为我修复了它:

CXXFLAGS="-mmacosx-version-min=10.9" LDFLAGS="-mmacosx-version-min=10.9" yarn

从这里尝试了答案。

如果您使用的是XCode 10,您会注意到,如果您导航到/usr,您将不再看到名为include的文件夹,这就是为什么终端抱怨缺少包含在"include"文件夹中的头文件的原因。

  1. 转到此处然后下载并安装:Command Line Tools (macOS 10.14) for Xcode 10
  2. 打开~/../../Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
  3. 运行CXXFLAGS="-mmacosx-version-min=10.9" LDFLAGS="-mmacosx-version-min=10.9" yarn install

那你应该很高兴了。

在 Linux 平台上曾经遇到过同样的问题。从主目录中删除node_modules.node-gyp/目录修复了错误。

我在这个错误中停留了很长时间,我付出了代价......我毁了一台笔记本电脑!

最后,这是对我有用的解决方案:

问题不在于node-gyphiredis.

有两种可能性:

1-您使用的是不兼容node版本

2-python符号链接不存在(我的问题是这个(

问题是新版本的Python将删除符号链接,我们应该重新创建链接:

安装最新版本的 Python:

brew install python

然后创建符号链接:


ln -s -f /usr/local/bin/python3.9 /usr/local/bin/python

当然,而不是3.9你应该把你的Python版本。

最新更新