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に限らず、nvmvoltaなど、シェルの設定ファイルで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は、主に以下で決まる:

.zshrc はインタラクティブシェル起動時にしか読まれないため、GUIアプリには反映されない。これはmacOSの仕様であり、Obsidianに限った話ではない。


まとめ