最初に結論
node-redでフローを書き出す際は、
- ファイルへの書き出しが一番無難
- やむを得ずクリップボードを使う際はインデントのあるJSONフォーマットにする
以下詳細
LINEのメッセージをGoogle Homeで読み上げる(機能強化版) のコメントでsekinetpさんに指摘されたのですが、gitにあげているnode-redのフローのjsonが4096バイトで切れている問題がありました。
フローはクリップボードに書き出して、ターミナルでcat - > file
で保存していました。使ったターミナルソフトが悪かったのかなと思い、別ので試しても同じです。ターミナル上では正常にペーストされているように見えても、ls -lすると4096バイト。
4096バイト以上で出力されているフローも1件あり、そのフローはインデントありJSONで書き出されていました。問題のあるフローはインデントなしJSONです。
調べてみると以下の記事が見つかりました: How to read over 4k input without new lines on a terminal?。Linux terminalのcooked mode時の一行の最大長制限が4kバイトとのこと。ちなみにMacOSだと1kだそうです。
インデントなしでフローを書き出すと全て1行で出力されるため、この制限に引っかかっていました。
しかし、20年近くLinux使ってきてて今頃この仕様に気づくとは... 今までホントに大丈夫だったのか心配です。