【Node.js】JSON.stringify()でcircular Error

1 min read読了の目安(約600字

循環参照エラー

Nest.jsのlogger実装の際に、requestの内容をJSON.stringfyしたら循環参照エラーになりました。

対処方法

循環参照を起こしている箇所を置き換えるだったり、循環参照でも使えるライブラリや、Nodeのutil.inspectなどあったのですが、
一番シンプルそうだったのが、JSON.stringifyのoption指定です。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value
const getCircularReplacer = () => {
  const seen = new WeakSet();
  return (key, value) => {
    if (typeof value === "object" && value !== null) {
      if (seen.has(value)) {
        return;
      }
      seen.add(value);
    }
    return value;
  };
};

JSON.stringify(circularReference, getCircularReplacer());
// {"otherData":123}