TypeError:JSON.stringify 无法序列化循环结构。 stringify@[本机代码]

2024-03-07

在我的 React Native Expo 项目中,我遇到一个错误,显示“TypeError: JSON.stringify 无法序列化循环结构。stringify@[native code]” 任何人都可以帮助我解决这个问题吗?我尝试使用一个名为“json-stringify-safe”的库,但是在像“body: jsonStringifySafe(MessageData)”这样使用它之后,它给了我反应导航错误任何人都可以帮助我修复这个错误吗?

   const SendMessage = async () => {
        const MessageData = {
            message: currentmessage,
            RoomId: roomid,
            SenderId: mydata._id,
            RecieverId: otheruser[0]._id
        };
        fetch('http://10.0.2.2:3000/saveMessage', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(MessageData),
        })
            .then(res => res.json())
            .then(data => {
                if (data.message === "Message Saved!") {
                    console.log("Message Saved!");
                    setCurrentMessage('');
                } else {
                    alert("Please, Try Again");
                }
            });
    };

我的后端:

router.post("/saveMessage", async (req, res) => {
    const { SenderId, RecieverId, message, RoomId } = req.body;

    try {
        const NewMessage = new Message({
            SenderId,
            RecieverId,
            message,
            RoomId
        })
        await NewMessage.save();
        res.send("Message Saved!")
    }
    catch (err) {
        console.log('error while saving message', err);
        res.status(422).send(err.message);
    }
})

该错误告诉您您拥有以下财产MessageData(或其后代)直接或间接最终引用自己。例如:

const parent = { children: [] };
const child = { parent };
parent.children.push(child);

在此刻,parent指的是child这是指parent。如果你这样做了JSON.stringify在其中任何一个上(直接或间接),您都会收到此错误,因为 JSON 无法表示循环结构:

const parent = { children: [] };
const child = { parent };
parent.children.push(child);
console.log(JSON.stringify(parent));

所以你必须看看MessageData以及它所引用的对象来找出循环在哪里。请注意,它可能非常深入:

const parent = { children: [] };
const child = { parent };
parent.children.push(child);

const zero = {
    one: {
        two: {
            three: {
                parent
            },
        },
    },
};

console.log(JSON.stringify(zero));

某些 JavaScript 引擎比其他引擎为您提供更多有关循环结构的信息。例如,V8(Chromium 浏览器和 Node.js 使用的引擎)对上述内容的描述如下:



js:26 Uncaught TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'Object'
    |     property 'children' -> object with constructor 'Array'
    |     index 0 -> object with constructor 'Object'
    --- property 'parent' closes the circle
    at JSON.stringify ()
    at js:26:18
  

这内容非常丰富,比您在问题中引用的内容还要丰富。因此,如果您还没有复制该问题,您可以尝试使用 Chromium 浏览器,希望它能为您提供有关周期位置的更多详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeError:JSON.stringify 无法序列化循环结构。 stringify@[本机代码] 的相关文章

随机推荐

  • Delphi 多索引通用列表

    我正在寻找一种 TList 后代 它可以让我添加一个或多个索引 并让我通过这些索引进行搜索和查看 30分钟的谷歌搜索让我一无所获 以前肯定需要这个 我的意思是 有多少次您有一个内存索引集合 然后需要以不同的顺序显示它 Thanks AJ 你
  • 事件与路由器绑定

    我在用着导航网 https github com krasimir navigo对于一个小网站 用户被要求登录到登陆页面上的帐户 然后在验证其帐户后路由到主模板 页面对象是从 Firebase 数据库填充的 因此我初始化一个类并将多个事件和
  • 是否可以在 Sublime Text 2 中链接键绑定命令?

    有时 我想在 Sublime Text 中显示侧栏中的当前文件 然后在文件夹结构中导航 这可以使用命令来实现reveal in side bar and focus side bar然而 它们必须绑定到两个单独的按键组合 因此我必须执行 2
  • 在 SQL Server 中将月份名称转换为月份编号

    在 T SQL 中 将月份名称转换为数字的最佳方法是什么 E g January gt 1 February gt 2 March gt 3 Etc 是否有任何内置函数可以做到这一点 这个怎么样 select DATEPART MM jan
  • 如何用新列覆盖 Spark 数据框中的整个现有列?

    我想用一个新列覆盖 Spark 列 该新列是二进制标志 我尝试直接覆盖 id2 列 但为什么它不像 Pandas 中的就地操作那样工作 如何在不使用 withcolumn 创建新列和 drop 删除旧列的情况下做到这一点 我知道 Spark
  • ASP.NET Core 5.0 RouteDataRequestCultureProvider 删除 url 中的默认区域性

    我尝试向我的 asp net core 项目添加多语言功能 但 RequestLocalization 中的 net 3 1 和 5 0 之间存在一些变化 我无法得到我想要的 我为每种语言添加了资源文件 并在我的剃刀页面中使用了资源 它可以
  • Windeployqt 不会为调试应用程序部署 qwindowsd.dll

    我正在尝试使用windeployqt exe Qt 5 13 2 为 CMake 3 16 生成的调试应用程序部署 dll 除了部署的平台插件 dll 之外 所有 dll 均已正确部署qwindows dll代替qwindowsd dll当
  • 系统verilog中的打包向量与未打包向量

    看看我在 System Verilog 中维护的一些代码 我看到一些信号的定义如下 node range hi range lo x 以及其他定义如下 node y range hi range lo 我明白那个x被定义为打包的 而y被定义
  • 对特定行禁用 StyleCop

    我们在 C 项目中使用 StyleCop 但在某些情况下 我们希望避免这些规则 我知道你可以添加
  • 阻止自动化工具访问网站

    我们网站上的数据很容易被窃取 我们如何检测是否有人正在查看网站或工具 一种方法是计算用户在页面上停留的时间 我不知道如何实施 任何人都可以帮助检测并防止自动化工具从我的网站上抓取数据吗 我在登录部分使用了安全图像 但即使如此 人们也可以登录
  • 包 org.springframework.data.repository 不存在 spring boot jpa

    我对 spring boot jpa 有一个小问题 我已将依赖项添加到 POM xml 我可以从 spring 工具套件正常运行它 作为 spring boot 应用程序运行 但是当我从命令行 mvn spring boot run 运行时
  • C++11 中没有“sto{short, unsigned Short}”函数吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 完全奇怪的 Firefox CSS bug

    我从事前端开发很长时间了 以前从未遇到过这样的错误 将以下 HTML 保存到文件并在 Firefox 中查看 我的是 3 6 3 h2 Some normal text strong some bold text strong weird
  • XSLT - 作为一系列节点的参数

    我的目标是将多个文件的名称传递到 XSLT 中并使用document myFile 我试图使用 saxon 引擎在命令行上传递参数 但它不断抛出错误 我知道我可以写出一个清单文件 对其进行处理 然后在完成后将其删除 但这似乎需要大量额外工作
  • 如何检查名称是否已经存在? Azure 资源管理器模板

    是否有可能check 在 ARM 模板中 如果我的虚拟机名称已存在 我正在为 Azure 市场开发解决方案模板 也许可以在其中设置一个参数用户界面定义 uniqe 目标是重现这个绿色钩子 一些注释 VM 名称只需在资源组内唯一 而无需在订阅
  • 如何将编译结果(使用javac)存储到文本文件中?

    我想编译一个Hello World程序 我用javac Hello World java 但是在cmd终端窗口中 它显示 semicolon is missing compilation error 如何将此编译错误存储到文本文件中 或者甚
  • R ggplot:如何将点与躲避条对齐?

    我想知道如何将 geom point 点与 geom bar 躲避条位置对齐 根据年份参数对条形进行躲避 但无论年份参数如何 点都绘制在躲避条形的中间 可重现的代码 set seed 42 dat lt data frame Respons
  • 在 dispose 方法中获取提供者方法不起作用

    我正在尝试访问 dispose 函数中的提供者方法 override void dispose if canRemoveData Provider of
  • JPA 查询中使用 @Transient 访问字段

    我有一个具有瞬态属性的实体 Entity Table name asset public class Asset Transient private String locationIdentifier N A SuppressWarning
  • TypeError:JSON.stringify 无法序列化循环结构。 stringify@[本机代码]

    在我的 React Native Expo 项目中 我遇到一个错误 显示 TypeError JSON stringify 无法序列化循环结构 stringify native code 任何人都可以帮助我解决这个问题吗 我尝试使用一个名为