node-gyp rebuild问题编译器

时间:2017-11-29 19:10:30

标签: node.js macos node-gyp

我的所有项目似乎都没有这个问题,特别是当我运行npm i(节点v6.9.4(npm v5.6.0)< - 也不确定)时会出现这个问题如果这是对的话):

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__threading_support:25:11: fatal error: 
          'pthread.h' file not found
    # include <pthread.h>

错误日志:

12788 verbose stack Error: farmhash@1.2.1 install: `node-gyp rebuild`
12788 verbose stack Exit status 1
12788 verbose stack     at EventEmitter.<anonymous> (/Users/tom.firth/.nvm/versions/node/v6.9.4/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:285:16)
12788 verbose stack     at emitTwo (events.js:106:13)
12788 verbose stack     at EventEmitter.emit (events.js:191:7)
12788 verbose stack     at ChildProcess.<anonymous> (/Users/tom.firth/.nvm/versions/node/v6.9.4/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
12788 verbose stack     at emitTwo (events.js:106:13)
12788 verbose stack     at ChildProcess.emit (events.js:191:7)
12788 verbose stack     at maybeClose (internal/child_process.js:877:16)
12788 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
12789 verbose pkgid farmhash@1.2.1
12790 verbose cwd /Users/tom.firth/Sites/the-works
12791 verbose Darwin 16.7.0
12792 verbose argv "/Users/tom.firth/.nvm/versions/node/v6.9.4/bin/node" "/Users/tom.firth/.nvm/versions/node/v6.9.4/bin/npm" "i"
12793 verbose node v6.9.4
12794 verbose npm  v5.6.0
12795 error code ELIFECYCLE
12796 error errno 1
12797 error farmhash@1.2.1 install: `node-gyp rebuild`
12797 error Exit status 1
12798 error Failed at the farmhash@1.2.1 install script.
12798 error This is probably not a problem with npm. There is likely additional logging output above.
12799 verbose exit [ 1, true ]

这两个都指向node-gyp rebuild - 我之前没有全局安装,但是我已经尝试过,有没有,并得到相同的错误。

我安装了xcode 9.1并运行: $ xcode-select --install 这给出了:xcode-select: error: command line tools are already installed, use "Software Update" to install updates

我按照以下步骤操作:npmjs.com/fixing-npm-permissions

$ gcc --version 这给出了:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.38)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ which gcc 这使: /usr/bin/gcc

node-gyp问题让我觉得它与编译器有关,但我重新安装了xcode和node(通过brew和nodejs.org)

任何帮助或建议都会非常感激。

修改

我试过npm 3.10.10,因为5.6.0显然不对。这是以前安装的,但没有解决问题。

我安装了xcode 8.2.1来替换xcode 9.1,但这并没有解决问题。

2 个答案:

答案 0 :(得分:1)

您基本上需要安装libtool才能使其正常运行。这与我使用bcrypt时遇到的问题相同。如果这看起来不起作用,你应该看看this

另外请检查安装了哪个版本的python支持的版本是2.7,根据node-gyp文档,还不支持最新的3.x.这个node Js Workshop讨论了关于gyp的更多细节,这也应该有所帮助。

答案 1 :(得分:0)

我不完全确定解决方案是什么。

  1. 我安装了xcode 8.2.1(从9.1开始)。我曾经试过这个,但是 最初这没有用。
  2. 然后我手动安装了命令行工具(不是通过 xcode-select --install)(Library/Developer/CommandLineTools 在此安装之前或之后不存在) - xcode-select -p 甚至改变了从指向xcode到命令行工具的路径 虽然目录不存在。
  3. 然后我再次安装Xcode8.2.1,自动选择xcode-select的路径 在没有重置的情况下进行了更改(xcode-select --reset)
  4. 在此之后,我的问题得到了解决。