ObsidianでClaudianプラグインのNode.jsエラーを解決する(macOS + nodebrew)
ObsidianでClaudianプラグインのNode.jsエラーを解決する(macOS + nodebrew)
ObsidianにClaudianプラグインをインストールしようとしたら、以下のエラーが出た。
Error: Claude Code CLI requires Node.js, but Node was not found on PATH.
Install Node.js or use the native Claude Code binary, then restart Obsidian.
ターミナルでは node -v が通るのに、なぜObsidianからは見えないのか。nodebrewユーザーが陥りやすい罠と、その解決策をまとめる。
原因
macOSでは、ターミナルとGUIアプリでPATH環境変数が異なる。
ターミナルは .zshrc や .bash_profile を読み込むため、nodebrewで設定したパスが有効になる。しかし、Obsidian(GUIアプリ)はこれらのシェル設定ファイルを読み込まない。
ターミナル → .zshrc を読む → nodebrew のパスが有効 → node が見つかる ✅
Obsidian → .zshrc を読まない → nodebrew のパスが無効 → node が見つからない ❌
nodebrewに限らず、nvmやvoltaなど、シェルの設定ファイルでPATHを追加するバージョンマネージャー全般で同じ問題が起きる。
解決策:シンボリックリンクを作成する
GUIアプリからも見える /usr/local/bin にシンボリックリンクを張る。
sudo ln -s ~/.nodebrew/current/bin/node /usr/local/bin/node
sudo ln -s ~/.nodebrew/current/bin/npm /usr/local/bin/npm
sudo ln -s ~/.nodebrew/current/bin/npx /usr/local/bin/npx
npm と npx も一緒にリンクしておくと、後々困らない。
作成後、Obsidianを完全に再起動する(Cmd+Qで終了→再度起動)。ウィンドウを閉じるだけでは不十分。
確認方法
シンボリックリンクが正しく張れているか確認:
ls -la /usr/local/bin/node
# /usr/local/bin/node -> /Users/ユーザー名/.nodebrew/current/bin/node
注意点
nodebrewでバージョンを切り替えた場合
nodebrew use v22.x.x のようにバージョンを切り替えても、~/.nodebrew/current は常に現在のバージョンを指すシンボリックリンクなので、/usr/local/bin/node の再作成は不要。
既に /usr/local/bin/node が存在する場合
Homebrewなどで別途Node.jsをインストールしていると競合する。その場合は既存のファイルを確認してから対応する。
ls -la /usr/local/bin/node
# 既存のファイルがあれば、必要に応じてバックアップしてから上書き
sudo ln -sf ~/.nodebrew/current/bin/node /usr/local/bin/node
それでもエラーが出る場合
Claudianの設定画面でClient Path(CLIパス)を手動指定していると、別のエラーが出ることがある。その場合は空欄にして自動検出に任せるとうまくいく。
補足:なぜこの問題が起きるのか
macOSのGUIアプリが参照するPATHは、主に以下で決まる:
/etc/paths/etc/paths.d/配下のファイルlaunchctl setenvで設定した環境変数
.zshrc はインタラクティブシェル起動時にしか読まれないため、GUIアプリには反映されない。これはmacOSの仕様であり、Obsidianに限った話ではない。
まとめ
- ClaudianのエラーはNode.jsが無いのではなく、ObsidianからPATHが見えないのが原因
/usr/local/binにシンボリックリンクを張れば解決- nodebrewの
currentリンクのおかげで、バージョン切り替え時の再設定は不要 - nvm・voltaユーザーも同様のアプローチで対応可能