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

Apollo Sandbox提示需开启自省但已开启问题(Apollo Server+TS)

解决方案:Apollo Sandbox 提示自省禁用但已配置启用的问题

针对你遇到的问题,以下是几个排查和解决方向:

1. 排查 Apollo Armor 配置影响

Apollo Armor 默认会禁用 schema 自省,即使你显式设置了 introspection: true,如果启用了 Armor 的保护逻辑,它会覆盖你的配置。

  • 如果你后续需要启用 Armor,必须在 Armor 配置中明确开启自省:
    const protection = new ApolloArmor({
      introspection: {
        enabled: true, // 显式开启自省
      },
      // 其他 Armor 配置
    }).protect();
    
  • 目前你注释了 ...protection,但仍需确认项目中是否有其他地方引入了 Armor 的全局配置,避免它暗中覆盖自省设置。

2. 确认环境变量的实际值

虽然你标注 config.env.development 当前为 true,但可能存在环境变量读取异常(比如 TypeScript 编译后变量未正确传递、config 文件逻辑错误)。

  • 可以暂时硬编码 introspection: true 替代环境变量,测试是否能正常触发自省:
    const server: ApolloServer = new ApolloServer({
      // ...其他配置
      introspection: true, // 直接设置为true
      // ...其他配置
    });
    

3. 检查 @apollo/subgraph 的冲突

使用 @apollo/subgraph 作为子图服务时,可能存在自省配置的特殊逻辑。

  • 尝试暂时移除 subgraph 相关的依赖或配置(比如 schema 中的子图指令),测试 Sandbox 是否能正常获取 schema,排除子图模块的影响。

4. 排查插件冲突

部分 Apollo Server 插件可能影响自省功能:

  • 简化插件数组,仅保留本地调试用的 Landing Page 插件,测试是否恢复正常:
    plugins: [
      ApolloServerPluginLandingPageLocalDefault({ embed: true }),
    ],
    
  • 逐步添加其他插件,定位是否有插件干扰了自省请求。

5. 验证服务器实际配置状态

在服务器初始化后,打印实际配置的自省状态,确认配置是否生效:

const server: ApolloServer = new ApolloServer({
  // ...你的配置
});

// 打印自省配置状态
console.log("当前自省状态:", server.config.introspection);

如果打印结果为 false,说明你的配置被其他逻辑覆盖,需要进一步排查配置合并的问题。


内容的提问来源于stack exchange,提问作者Abdurahman Shiine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:50:56