😇

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

2021/03/02に公開

循環参照エラー

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}

Discussion