首页 > 解决方案 > JSON.stringify 在 Angular Universal 中的 SSR 期间引发错误,但适用于 locahost“TypeError:将循环结构转换为 JSON”

问题描述

我的角度组件中有以下内容

JSON.stringify({ "webSlug": slug });

当使用 为应用程序提供服务时,它在 localhost 上运行良好ng serve,但是当通用尝试在节点应用程序上进行服务器端渲染时。服务器控制台显示以下错误...我该如何重写或解决错误?

ERROR { TypeError: Converting circular structure to JSON
0|amec  |     at JSON.stringify (<anonymous>)
0|amec  |     at readableObjectToString (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:669:63)
0|amec  |     at resolvePromise (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:831:69)
0|amec  |     at resolvePromise (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:788:17)
0|amec  |     at /home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:892:17
0|amec  |     at ZoneDelegate.invokeTask (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:423:31)
0|amec  |     at Object.onInvokeTask (/home/ec2-user/packages/core/src/zone/ng_zone.ts:262:25)
0|amec  |     at ZoneDelegate.invokeTask (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:422:60)
0|amec  |     at Zone.runTask (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:195:47)
0|amec  |     at drainMicroTaskQueue (/home/ec2-user/amec_compiled/node_modules/zone.js/dist/zone-node.js:601:35)
0|amec  |   rejection: 
0|amec  |    HttpErrorResponse {
0|amec  |      headers: HttpHeaders { normalizedNames: Map {}, lazyUpdate: null, headers: Map {} },
0|amec  |      status: 0,
0|amec  |      statusText: 'Unknown Error',
0|amec  |      url: null,
0|amec  |      ok: false,
0|amec  |      name: 'HttpErrorResponse',
0|amec  |      message: 'Http failure response for (unknown url): 0 Unknown Error',
0|amec  |      error: 
0|amec  |       ProgressEvent {
0|amec  |         type: 'error',
0|amec  |         target: [XMLHttpRequest],
0|amec  |         currentTarget

标签: angularangular-universal

解决方案


我曾经遇到过这个错误,原因实际上是 Angular Universal 发送的 HTTP 请求不成功。因此,关于将循环结构转换为 json 的部分具有误导性。

根据以下消息,我认为这里对您来说是一样的

message: 'Http failure response for (unknown url): 0 Unknown Error',

确保 Angular Universal 可以向您的 API 或您正在调用的任何 url 发送请求。可能只是目标服务器的 SSL 证书无效(如果我没记错的话,那是我的问题)


推荐阅读