我正在使用gatsby插件gatsby-plugin-disqus(最新版本(在我的gatsby站点中添加评论。它以前工作过,但现在它抛出错误,注释不加载。似乎有循环参考,但我不知道是什么原因造成的。
Uncaught TypeError: Converting circular structure to JSON
--> starting at object with constructor 'HTMLDivElement'
| property '__reactInternalInstance$ijgm46blrc' -> object with constructor 'FiberNode'
--- property 'stateNode' closes the circle
at JSON.stringify (<anonymous>)
at b.Channel.h.sendMessage (embed.js:44)
at e.<anonymous> (embed.js:45)
at e.<anonymous> (embed.js:44)
at e.<anonymous> (embed.js:44)
at m (embed.js:44)
at e.trigger (embed.js:44)
at e.<anonymous> (embed.js:44)
at m (embed.js:44)
at b.Channel.trigger (embed.js:44)
at embed.js:44
我的disqus配置看起来像:
const disqusConfig = {
identifier: "/my-post-title-slug/"
title: "my post title"
url: "https://somesite.com/blog/my-post-title-slug/"
}
我把它渲染成这样:
import { Disqus } from 'gatsby-plugin-disqus';
// ....
<Disqus config={disqusConfig} />
我不确定是什么原因造成了这个问题。我试着使用以前版本的插件,但我得到了相同的结果。
请让我知道我在这里缺了什么。谢谢
这很奇怪。当试图字符串化包含循环引用的对象时,通常会看到这种类型的问题。例如:
VM1374:32未捕获类型错误:将循环结构转换为JSON(…(
但是您传递的对象很简单,只包含字符串值。我想知道这是否不是由Disqus引起的,而是混合中的其他原因。
为了验证这不应该是一个问题,我使用Disqus软件包的v1.2.4,用我自己的Gatsby本地站点(v4(模拟了完全相同的设置。我没有看到任何错误。
也就是说。。。我建议的步骤:
- 确认不是由其他程序包引起的
- 尝试将配置对象直接填充到组件中。我不知道为什么会产生不同的结果,但值得一试:
<Disqus
config={{
identifier: "/my-post-title-slug/",
title: "my post title",
url: "https://somesite.com/blog/my-post-title-slug/"
}}
/>
如果这太麻烦了,可以考虑试试Disqus的替代方案。在Disqus遇到了很多挫折,包括性能和缺乏SEO友好性之后,我建立了一个自己的Disqus。欢迎您试用:
https://jamcomments.com