Node-REDのhttp出力ノードで"No response object"というエラーが表示される


状況

debugノードではmsg.payloadがきちんと出力されているのに、http出力ノードでは「No response object」というエラーになる。

原因

途中でfunctionノードでmsgオブジェクトを新しく作成した際に、msg.reqとmsg.resを引き継いでいなかった。

以下の記事にも書いてありました。
node-redの覚書|JavaScript スニペット - littlewing

ドキュメントにも書いてあるのですが、 HTTPでレスポンスするためには、HTTP requestの.res .reqを引き回してあげないといけません。

はい、ドキュメントをちゃんと読みなさいということですね。

解決方法

msgオブジェクトを何らかの理由で新しく作成した場合には、msgの.reqと.resを引き継ぐ。

var newMsg = {};
newMsg.req = msg.req;
newMsg.res = msg.res;

// なんかの処理

return newMsg;