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]