OpenBlocksIoTでNode-REDが動かずにはまったらNode.jsのバージョンが古かった

手持ちのOpenBlocksIoT VX2で作成したNode-REDのアプリケーションを、別のOpenBlocksIoT VX2に入れようとしたところ、なぜだかNode-REDが立ち上がらない問題が発生。

結論としては、開発した方はFW5でNode.jsのバージョンがV18.17.1、移そうとした方がFW4でNode.jsのバージョンがV12.22.12だったので、Node-REDの最新バージョン(V3)はNode.jsのバージョンが対応していなことが原因だった。

どうやって判明したか

Node-REDのログを確認すると、下記のようなエラーが何度も記録されていた。

SyntaxError: Unexpected token '.'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/var/webui/app/nodered/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/index.js:24:19)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
/var/webui/app/nodered/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/credentials.js:389
                const newCredentialKeys = Object.keys(newCreds?.map || [])

このエラーをChatGPTに確認してもらったところ

との回答。

サポートされているNodeのバージョン

なるほど。OpenBlocksのnode.jsのバージョンを確認する必要がありそうだ。

OpenBlocks IoT VX2にSSH接続してnode.jsバージョンを確認

OpenBlocks IoTはデフォルト状態だとSSH接続できないので、下記記事を参考にSSH接続の準備。

OpenBlocks IoT VX2でSSHを使う場合の設定項目

SSH接続する場合は、rootのPWも必要なので、なんだったけな?と思ったのですが、

OpenBlocksのWebUIにログインできればこちらで設定できるので安心です。

以上でrootでSSH接続できるようになったので、ターミナルから接続し、

$ node --version

v12.22.12

と、やはりNode.jsのバージョンがv12であったことが確認できました。

OpenBlocks IoTのnode.jsのバージョンアップ方法?

今回は事情があり、FW5へのアップデートができないので、FW4のままOpenBlocks IoTのnode.jsのバージョンアップをしたいのですが、その方法が見つかりませんでした。

これは、わかりましたらまた記事かきます。

まとめ

以上、「OpenBlocksIoTでNode-REDが動かずにはまったらNode.jsのバージョンが古かった」件についてご紹介しました。

手持ちのデバイスで問題無く動いているし、いままで何件もNode-REDを使ってきているので、従来と同じやり方でNode-REDが動ず半日はまりましたが、このパターンは今後もありそうだという知見が得られました。

引き続き、OpenBlocksではまったら記事にしていきたいと思いますので、よろしくおねがいします。