Не удается установить узел с brew в Mac OS Sierra


92

Я пытаюсь установить node с homebrew на macOS Sierra. я бегу

 brew install node

После, казалось бы, успешной установки при попытке запуска я получаю следующее node:

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58.dylib
  Referenced from: /usr/local/bin/node
  Reason: image not found
Abort trap: 6

1
Возможно, это (заменить php56на node) поможет, но я сам использую официальный установщик Node.js для Mac.
Робертклеп

6
это сработало для меня: brew update && brew переустановить nodejs
Скотт Флэк

Найдите ветку на github здесь github.com/Homebrew/homebrew-core/issues/11713
Саймон Франзен,

@ScottFlack, заварите обновление; brew переустановить nodejs также может работать, поскольку переустановка nodejs может пройти, несмотря на то, что обновление brew завершается ненулевым (например, из-за неправильно настроенного или неиспользованного крана).
emallove

Ответы:


108

Это серия заклинаний , которые в конечном счете работали для меня на основе этой ссылки , предложенной @robertklep и @vovkasm.

brew uninstall --force node
brew uninstall icu4c && brew install icu4c
brew unlink icu4c && brew link icu4c --force
brew install node

Я не уверен, все ли они нужны, но, учитывая, что я не могу вернуть свою машину в предыдущее состояние ... Я просто оставлю эту информацию здесь, может быть, она будет полезна кому-нибудь еще.


3
Спасибо за это. У меня работал на Mac Os 10.13.4 High Sierra. Клянусь, я никогда не пойму необходимости --force. Это как «Я действительно серьезно, на этот раз ...».
Мэтт

3
Мне также пришлось удалить узел 8, чтобы это работало. brew uninstall node@8. См medium.com/@mahcloud/mac-brew-node-10-upgrade-55d3e910eebb
jkschneider

6
Добавлен параметр --ignore-dependencies для удаления команд, и он отлично работал.
Алмас Дусал

1
Просто принудительное удаление и повторная установка у меня сработали!
Graystripe

1
Вы можете столкнуться с ошибкой, когда NPM сообщит, что его нельзя удалить, icu4cпоскольку это зависит от других приложений. Чтобы обойти эту пробег: brew uninstall --ignore-dependencies icu4c && brew install icu4c. Эта команда заменяет вторую команду @mircealungu.
reelyard

68

В моем случае brew upgrade nodeпроблему решаем :)


8
Думаю, хочешь brew upgradeвместо этого updateвыдал мне ошибку.
getmicah 05

31

Я получил эту ошибку при установке @angular/cli, понял, что узел может быть устаревшим. Следующие шаги @mircealungu не совсем помогли мне, вот модифицированная версия, которая сработала для меня.

brew uninstall --ignore-dependencies --force node
brew uninstall --ignore-dependencies --force icu4c
brew install icu4c
brew unlink icu4c && brew link icu4c --force
brew install node

2
Это сделало это для меня. Также помогло моему текущему проекту просто убить node_modules ( rm -rf node_modules) и npm installвсе сначала.
notacouch

1
У меня возникла эта проблема после установки php56-pgsql через brew, это исправление для меня.
Felice Ostuni

3
Спасибо, этот ответ спас мне жизнь. Есть кое-что, что мне пришлось сделать за пределами этих шагов.
Йоши


23

Недавно я столкнулся с аналогичной проблемой (после brew switch node 9.8.0перехода на предыдущую версию узла)

dyld: Library not loaded: 
/usr/local/opt/icu4c/lib/libicui18n.60.dylib
  Referenced from: /usr/local/bin/node
  Reason: image not found
Abort trap: 6

Проблема в том, что узел разборчив в том, какую версию icu4c он ищет, а версия, которую я установил (62), была выше, чем ожидал узел.

Чтобы исправить это, я убедился, что у меня выбрана версия icu4c 60.

Сначала я обнаружил, с какими версиями у меня был brew info icu4c, затем brew switch icu4c 60.2выбрал ожидаемый узел.


как вы определили, что этому узлу нужна версия 60.2 - спасибо
raison

1
@raison Версия icu4c, которую ищет узел, указана в сообщении об ошибке dyld. В этом случае 60. Сравните это с выводом, brew info icu4cчтобы найти совместимую версию, например 60.2.
neatonk

Это лучший ответ
saza

13

Кажется, файл /usr/local/opt/icu4c/lib/libicui18n.58.dylibне существует в вашей системе.

Убедитесь, что icu4cустановлен с Homebrew.

  1. brew info icu4c
  2. Если уже установлено, попробуйте переустановить: brew reinstall icu4c
  3. Если не установлен, попробуйте установить: brew install icu4c

12

Для высокой seirra просто «варить апгрейд» творит чудеса!


2
То же самое и с Мохаве. Возникла проблема с установкой PHP и просто набрала вашу команду. Спасибо.
Джулиан

9

Сначала я удаляю узел и icu4c, принудительно удаляю все версии

brew uninstall --force --ignore-dependencies node icu4c

После установки версии 8 Node

brew install node@8

Если он уже установлен, просто обновите

brew upgrade node@8

И войти

node -v

Версия 8.11.1


8

Для меня видимо это была проблема с icu4cустановкой от brew.

brew reinstall icu4c

переустановлю icu4c.

если он у вас не установлен,

brew install icu4c

1
Большое спасибо, это сэкономило мне столько времени и сил. Очень долго искал этот ответ.
DC

это должен быть принятый ответ. эта команда спасла меня
Джейс Анасруллох Джафари

7

Это было вызвано для меня после того, как brew upgradeи brew updateпобежал. Я смог исправить это, просто переустановив два элемента, отмеченных как проблемы (что имело для меня смысл):

brew reinstall node
brew reinstall icu4c

4

У меня ничего из вышеперечисленного не сработало. Я использую High Sierra.

Что исправило для меня, так это brew upgrade



3

Я нашел решение, которое отлично работает здесь . Я вкратце дам команды ниже.

Сначала перейдите в каталог формул домашнего пивоварения:

cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

Журнал Git:

git log --follow icu4c.rb

Выберите хэш фиксации, соответствующий нужной вам версии. Мне нужна была версия 61.1, поэтому выбрал 6d9815коммит:

git checkout -b icu4c-61.1 6d9815

Переустановить:

brew reinstall ./icu4c.rb

Переключатель:

brew switch icu4c 61.1

Это исправило это для меня.

Кредит: hanxue


1
также отличное общее исправление для других проблем с библиотекой! раньше была эта проблема с другими библиотеками, но это, безусловно, самое чистое решение (с веткой git и просто проверкой старых версий, а не редактированием формулы вручную)
Рики Кук,


1

Эта ошибка возникла у меня после миграции машин.

Несмотря на то, что все было установлено, когда я пошел проверить node -vили npm version, я получил эту ошибку.

Что исправлено было brew reinstall icu4c.


1

У меня была такая же проблема с моей локальной установкой php.

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found
Abort trap: 6

Решил проблему этой командой. (проверьте свою версию)

brew link --overwrite --force php@7.1


0

похоже, что ваш ссылочный путь icu4u установлен неправильно

сначала проверьте, можете ли вы установить icu4c или нет, оставив комментарий ниже в сообщении комментария

brew info icu4c

или переустановите

brew reinstall icu4c

Если вам нужно сначала установить это программное обеспечение при запуске PATH:

echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile

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


0

Это так же просто, как и обычное программное обеспечение, просто скачайте установочный пакет с официального сайта: NodeJS

а затем загрузите рекомендованную версию (в настоящее время 8.11.3, в конце .pkg), установите ее как обычное программное обеспечение, и вы сможете ее использовать. Я перепробовал очень много методов, и только это у меня работает.



0

Я удалил export PATH="/usr/local/opt/icu4c/bin:$PATH"свой ~/.bash_profileфайл, и это устранило мою проблему.

Моя ошибка была:

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.63.dylib
  Referenced from: /usr/local/opt/node@10/bin/node
  Reason: image not found
Abort trap: 6

Мой /usr/local/opt/icu4c/libсодержитlibicui18n.64.dylib

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.