🐒

pnpmの「Library not loaded」エラーを解決する

2025/03/08に公開

問題の発生

Astro.jsの新規プロジェクトを作成しようとした際に、以下のようなエラーが発生しました:

dyld[26833]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicui18n.72.dylib
Referenced from: <3CF6C928-EC2B-3162-8AAF-81F101FD076B> /opt/homebrew/Cellar/node/19.8.1/bin/node

このエラーは、macOSでpnpm create astro@latestコマンドを実行した際に表示されました。

原因

エラーメッセージを分析すると、以下のことがわかります:

  1. Node.js(バージョン19.8.1)が、libicui18n.72.dylibという共有ライブラリを必要としています
  2. このライブラリはicu4cパッケージの一部で、International Components for Unicode(国際化のためのコンポーネント)を提供します
  3. 必要なバージョン(72)が見つからないため、エラーが発生しています

Node.jsは特定のバージョンのICUライブラリに依存していますが、Homebrewでインストールされているicu4cパッケージは別のバージョン(より新しいバージョン)になっているため、互換性の問題が発生しているのです。

解決方法

この問題を解決するには、以下の手順を実行します:

1. 現在インストールされているicu4cのバージョンを確認する

まず、実際にどのバージョンのライブラリが存在するかを確認します:

ls /opt/homebrew/opt/icu4c/lib/

このコマンドを実行すると、libicui18n.XX.dylibのような形式のファイルが表示されます(XXは実際のバージョン番号)。

2. シンボリックリンクを作成する

Node.jsが探しているバージョン(72)のライブラリが存在しないため、実際に存在するバージョンからシンボリックリンクを作成します:

sudo ln -s /opt/homebrew/opt/icu4c/lib/libicui18n.XX.dylib /opt/homebrew/opt/icu4c/lib/libicui18n.72.dylib

※ XXには実際に存在するバージョン番号(例:73や74など)を入力してください。

3. Astroプロジェクトを再度作成する

シンボリックリンクを作成した後、再度Astroプロジェクトの作成を試みます:

pnpm create astro@latest

これで、エラーなくAstroプロジェクトが作成できるはずです。

代替解決策

シンボリックリンクの作成が上手くいかない場合は、以下の代替方法も試してみてください:

  1. icu4cを再インストールする

    brew reinstall icu4c
    
  2. Node.jsを再インストールする

    brew reinstall node
    
  3. Homebrewを更新する

    brew update && brew upgrade
    

まとめ

このエラーは、Homebrewでインストールされたパッケージのバージョンが、Node.jsが期待するバージョンと一致しないことが原因です。シンボリックリンクを作成することで、Node.jsが必要なバージョンのライブラリを見つけられるようになり、問題が解決します。

macOSでHomebrewを使用している場合、特にNode.jsベースのツールを使う際には、このような依存関係の問題が発生することがあります。シンボリックリンクの作成は、ライブラリのバージョン不一致を解決するための一般的な方法です。

Discussion