手持ちの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に確認してもらったところ
との回答。
なるほど。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ではまったら記事にしていきたいと思いますので、よろしくおねがいします。