【问题标题】:Socket.io emit empty object if it's an Error如果是错误,Socket.io 会发出空对象
【发布时间】:2020-12-03 09:30:28
【问题描述】:

当我发出Error 类的一个对象时,这个对象在客户端是空的。如何通过 socket.io 发送Error 对象??

示例:

let error = new Error("test");
client.emit(road, { success: false, err: error });

结果:

关于服务器(发出Error):

  • 节点:v12.16.1
  • socket.io: "2.3.0

关于客户端(接收Error):

  • chrome:版本 87.0.4280.88(官方构建)(64 位)
  • socket.io-client: ^2.3.0,

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    写在这里:https://stackoverflow.com/a/20916142/12530707 Socket.io 在对象上执行JSON.stringify,然后将其发送到套接字上。 您可以在控制台中自行计算,输入JSON.stringify(new Error("test")) 会导致{}

    我可以建议您在发送之前检查对象类实例,以便您自己将其转换为“有效”对象:

    if (err instanceof Error)
       err = { message: err.message, stack: err.stack };
    client.emit(road, { success: false, err: err });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2023-02-08
      相关资源
      最近更新 更多