You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将entities设为structuredData时出现Cannot perform 'get' on a proxy that has been revoked错误

解决 'Cannot perform 'get' on a proxy that has been revoked' 错误

问题场景

当前代码中,bulkWatchPayload 函数返回对象的 entities 字段赋值为 requestIds 时可正常运行,但改为赋值映射生成的 structuredData 数组时,触发错误:Cannot perform 'get' on a proxy that has been revoked。已知 requestIds = [123,345,1231,3423],structuredData 是通过 requestIds 与 currentView 拼接生成的字符串数组。

相关代码

export const bulkWatchPayload = (requestIds = [], currentView) => {
  const structuredData = requestIds.map(
    (requestId) => `ukca_${requestId}_${currentView}`
  )
  
  return {
    userId: getCurrentUserEmailId(),
    correlationId,
    entityType: `ukca-list-view-page`,
    entities: requestIds // 替换为structuredData即报错
  }
}
socket.emit(
  SocketEvents.REPLACE_WATCH,
  bulkWatchPayload(e.data.requestIds, e.data.currentView)
)

原因分析

这个错误的核心是代码尝试访问一个已被**撤销(revoked)**的Proxy对象,大概率是以下情况:

  • e.data 本身是Proxy实例,调用 bulkWatchPayload 后该Proxy被提前销毁或撤销
  • structuredData 的生成过程依赖了Proxy对象的属性,后续Proxy失效导致访问触发错误

解决方案

1. 提前提取数据,脱离Proxy引用

先把 e.data 中的数据解构或复制出来,再传入函数,避免直接操作Proxy对象:

// 解构提取或浅拷贝,切断与原Proxy的关联
const { requestIds, currentView } = e.data;
const safeRequestIds = [...requestIds];

socket.emit(
  SocketEvents.REPLACE_WATCH,
  bulkWatchPayload(safeRequestIds, currentView)
)

2. 在函数内部复制输入数据

在 bulkWatchPayload 内部对传入的 requestIds 做一次拷贝,确保生成的 structuredData 不依赖原Proxy:

export const bulkWatchPayload = (requestIds = [], currentView) => {
  // 浅拷贝数组,脱离原Proxy引用
  const safeIds = [...requestIds];
  const structuredData = safeIds.map(
    (requestId) => `ukca_${requestId}_${currentView}`
  )
  
  return {
    userId: getCurrentUserEmailId(),
    correlationId,
    entityType: `ukca-list-view-page`,
    entities: structuredData
  }
}

3. 检查correlationId的来源

注意代码中 correlationId 未在函数内部定义,如果它同样来自 e.data 或其他Proxy对象,也可能引发类似问题,建议确认其取值是否脱离了Proxy引用,必要时同样做复制处理。

内容的提问来源于stack exchange,提问作者C09-G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:30:16