Почему node -gyp rebuild не работает на Mac OSX El Capitan

Недавно я купил mac, который использует Mac OSX El Capitan v10.11.4. Установлен node с homebrew, и я использую node v6.2.2 и npm v3.9.5. Я получаю сообщение об ошибке с bcrypt во время npm install, которое, как я полагаю, происходит от ошибки node-gyp rebuild. Я также недавно загрузил xcode-select (версия 2343) и xcode (7.3.1) (в этом порядке).

Вот полный вывод ошибки после того, как я запустил npm install:

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

Не уверен, что пойдет не так. Я исхожу из linux land и, как правило, опасаюсь не устанавливать из исходного кода, может быть, это и есть причина этих проблем? Во всяком случае, любой совет будет оценен по достоинству. Я также видел, что эта ошибка возникает для других, но ни одно из их решений, похоже, не срабатывало (когда я набираю xcode-select --print-path, я получаю /Applications/Xcode.app/Contents/Developer)

Ответ 1

Этот тоже немного меня укусил. Было несколько различных решений, только один из них работал у меня.

Сначала убедитесь, что у вас установлены инструменты командной строки XCode, как говорится на странице npm.

1) Самое простое решение, которое, конечно же, не сработало (хотя похоже, что это было для некоторых людей), нужно просто удалить каталог ~/.node-gyp. Так что вы можете также сделать этот снимок, а также удалить ваш node_modules dir и сделать еще один npm install.

2) Попробуйте удалить node -gyp и переустановить:

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

3). Но какой трюк был решением, дано в проблеме node -gyp на github, где вам нужно установить другую версии node и сделайте свой 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.

Надеюсь, что это поможет!

Ответ 2

Если кеш node_modules был создан с использованием последней версии Node, вам может потребоваться удалить кеш, вернуть обратно и затем переустановить пакеты:

rm -rf node_modules
nvm use 6
npm install

Ответ 3

Если вы используете virtualenv для своего python, вам нужно деактивировать его или указать npm, чтобы использовать собственную установку python 2 для работы узла-gyp.


РЕДАКТИРОВАТЬ:

Была еще одна встреча с той же ошибкой несколько дней назад. На этот раз вокруг узла-гипа не было вины. Очевидно, что модуль, который я устанавливал, зависит от очень старой версии node-gyp (v1), независимо от версии системы (v3.8), которую моя версия узла (v10) больше не поддерживает. Поскольку мне больше не нужен этот модуль, я удалил его. В качестве альтернативы, вы можете обновить/понизить/заменить неисправный модуль или обновить/понизить ваш узел. В случае OP модуль-нарушитель был [email protected]

Ответ 5

если вы хотите обновить Node до 10 или выше, вы должны найти устаревшие зависимости с Node 10 в package.json и обновить эти пакеты до более новой стабильной версии, а затем собрать (npm/yarn install).