Node-RED-Desktop (on Mac) でノード追加に失敗してしまうときの対策

9628 ワード

だいたいの場合は node のPATHが通っていないことが原因であります。

公式Wiki: Mac: PATH settings example in launchd
こちらではplistを作って読み込ませる方法が書いてあるが、おそらく再起動させないといけない?(それすら面倒で未検証)のか、これをやってもうまくいかなかったので、もっとズボラに解消する方法のメモ。

1. インストール済みの node の位置を確認

Terminalを開き、 which node を実行する。

$ which node
/Users/hogehoge/.nodebrew/current/bin/node

nodebrewでインストールされた場合は上記のようなPATHになっているはず。このPATHをコピーしておく。そもそもNode.jsが未インストールの場合は予めインストールしておくこと。

2. launchctlを使って一時的にPATHを通す

# 以下行のPATH以降の "/Users/hogehoge/.nodebrew/current/bin" は手順1で得られた自身のPATHに置き換えること
$ launchctl setenv PATH /Users/hogehoge/.nodebrew/current/bin:$PATH

参考: macOSでGUIアプリの環境変数を設定する方法探求

3. 同じTerminalからNode-RED-Desktopを起動

だいたいの場合で /Applications 直下だと思いますが違う場合は適宜あわせてください。

$ open /Applications/Node-RED-Desktop.app

4. 以下に示すnode実行確認フローをインポート&デプロイして、デバッグタブにエラーが出ないことを確認する

[{"id":"7a4efcce.89b8c4","type":"inject","z":"c37c6de7.10798","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":60,"wires":[["d1acddb8.e8361"]]},{"id":"d1acddb8.e8361","type":"exec","z":"c37c6de7.10798","command":"node -v","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":320,"y":60,"wires":[["9483c8bb.2c7d58"],["9483c8bb.2c7d58"],["9483c8bb.2c7d58"]]},{"id":"9483c8bb.2c7d58","type":"debug","z":"c37c6de7.10798","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":490,"y":60,"wires":[]}]

上記JSONはNode-RED-Desktop公式の「ノードの追加に失敗するときは・・・」で示されているフローです。

上記のような感じになっていればOKです。
このまま終了せず、追加したいノードをインストールしてしまいましょう。

終了させて普通に起動するとまたnodeのPATH通ってない状態になるが、そもそもノード追加時ぐらいしかnode使わなさそうなので一旦はこれで大丈夫かも