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

useLazyQuery页面加载报client.watchQuery不可设置standby fetchPolicy错误

解决思路

1. 修复依赖版本不兼容(核心原因)

你的项目依赖存在版本冲突:@apollo/react-hooks@^4.0.0 仅适配 Apollo Client 3.x 版本,而你安装的是 apollo-client@^2.6.10(2.x 旧版本),二者不兼容会导致内部逻辑异常:未触发的 useLazyQuery 会被强制注入 fetchPolicy: "standby" 的默认值,覆盖你手动配置的 no-cache 参数,最终触发报错。
可选择任意一种方案修复:

  • 降级 @apollo/react-hooks 到 3.x 版本,匹配 2.x 版本的 apollo-client
  • 卸载旧的 apollo-client、apollo-boost、apollo-cache-inmemory 等零散包,统一替换为 @apollo/client@3.x 全家桶,对齐官方版本规范

2. 清理本地依赖缓存

该问题仅本地复现,大概率是本地缓存的依赖存在脏数据,按顺序执行以下操作:

  • 删除项目根目录的 node_modules 文件夹、package-lock.json(或 yarn.lock、pnpm-lock.yaml)锁文件
  • 清理包管理器缓存:npm 执行 npm cache clean --force,yarn 执行 yarn cache clean
  • 重新执行依赖安装命令,启动项目验证

3. 补充参数兜底

如果暂时不想调整依赖版本,可以在 useLazyQuery 配置项中额外添加两个参数,强制覆盖错误的默认逻辑:

const [getRoles] = useLazyQuery(GET_ALL_ACCOUNT_ROLES, {
    fetchPolicy: 'no-cache',
    nextFetchPolicy: 'no-cache', // 新增
    notifyOnNetworkStatusChange: true, // 新增
    // 原有onError、onCompleted逻辑保持不变
})

4. 对齐 TypeScript 版本

检查本地全局 TypeScript 版本是否和项目 package.json 中声明的 ^4.3.5 不一致:执行 tsc -v 查看版本,如果版本差异较大,可将全局 TypeScript 降级到匹配范围,或者使用项目本地的 TypeScript 版本执行编译。

内容的提问来源于stack exchange,提问作者Jake Tompkins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:03