Web ソケットを使用してエラーが発生した場合、多くの場合、エラー メッセージを渡すことが必要になります。最初は、JSON.stringify を使用するのが簡単な解決策のように見えますが、ネイティブ Error オブジェクトを適切に文字列化できません。
問題:
Error オブジェクトを文字列化しようとすると、結果が返されます。空のオブジェクト ({}) 内にあり、エラーの情報が存在しなかったことを示します。
原因:
問題は、Error オブジェクトのプロトタイプ プロパティ内にあります。 stack や message などの主要なプロパティには、列挙可能なフラグが false に設定されています。その結果、JSON.stringify はシリアル化プロセス中にこれらのプロパティをスキップし、空のオブジェクトが残ります。
解決策:
この動作を回避するには、手動で抽出する必要があります。 Object.getOwnPropertyNames を使用して、Error オブジェクトのプロパティを取得します。これらのプロパティを置換関数として JSON.stringify に渡して、エラー情報を含む JSON 文字列を作成できます。
JSON.stringify(err, Object.getOwnPropertyNames(err))
あるいは、列挙可能なプロパティを持つ独自のカスタム エラー オブジェクトを作成することもできます。 JSON.stringify.
によって正しく文字列化できるようになります。以上がJSON.stringify がエラー オブジェクトの文字列化に失敗する理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。