Node.js、JavaScriptのオブジェクトをJSON形式の文字列にする

ES6のテンプレートリテラルでオブジェクトをデバッグログに出力したい場合、 JSON.stringfyでJSON文字列化する。 console.logなどの出力メソッドに、オブジェクトをそのまま渡すと以下のようなエラーを吐くものがある。

Cannot convert object to primitive value

expressのGetting Startedをしている最中、リクエストボディをデバッグした際に出た。

console.log(`req.body: ${req.body}`); //TypeError: Cannot convert object to primitive value

JSON形式の文字列にしてあげるといい。

console.log(`req.body: ${JSON.stringify(req.body)}`); // {name: 'Tom'}

余談

実際自分で適当にオブジェクトを作って、テンプレートリテラルに渡しても、[object object]と表示され、Cannot convert object to primitive valueというエラーにはならない。型の違いなのかもしれないが、どちらもtypeofで調べてもobjectとしか表示されないので、いまいち分かりにくい。

const tom = {name: 'Tom'};
console.log(`tom: ${tom}`); // tom: [object Object]