【问题标题】:Graphql Yoga Playground with Lambda - "Server cannot be reached"带有 Lambda 的 Graphql Yoga Playground -“无法访问服务器”
【发布时间】:2019-05-30 22:02:41
【问题描述】:

我正在使用 servlerless/lambda 设置 graphql 端点,并且在尝试连接到 graphql-yoga 附带的 graphql 游乐场时收到错误消息。当我去有操场 (/playground) 的路线时,它会启动操场界面,但它只是说:

无法访问服务器

在操场的右上角。值得注意的是,我正在使用 makeRemoteExecutableSchema 实用程序代理到另一个 graphql 端点(这是我的名为 Prismic 的 CMS)。我不认为这是问题所在,因为在普通快递服务器上进行测试时,我已成功将其与操场连接。

这是我的 handler.js

中的代码
'use strict';

const { makeRemoteExecutableSchema } = require('graphql-tools');
const { PrismicLink } = require("apollo-link-prismic");
const { introspectSchema } = require('graphql-tools');
const { ACCESS_TOKEN, CMS_URL } = process.env;
const { GraphQLServerLambda } = require('graphql-yoga')

const lambda = async () => {
  const link = PrismicLink({
    uri: CMS_URL,
    accessToken: ACCESS_TOKEN
  });

  const schema = await introspectSchema(link);

  const executableSchema = makeRemoteExecutableSchema({
    schema,
    link,
  });

  return new GraphQLServerLambda({ 
    schema: executableSchema,
    context: req => ({ ...req })
  });
}

exports.playground = async (event, context, callback) => {
  context.callbackWaitsForEmptyEventLoop = false;
  const graphQl = await lambda();
  return graphQl.playgroundHandler(event, context, callback);
};

我已经按照this 指南让它运行到这里,并且我相当确定我已经遵循了适用于我正在尝试做的事情的类似步骤,但似乎无法弄清楚我在哪里出错了。

谢谢,

【问题讨论】:

  • 您应该检查 Chrome 开发工具中的网络选项卡,以查看它向您的 graphql 端点触发的 HTTP 请求。希望它能告诉你更多关于错误的信息,如果你把它贴在这里,有人可能会提供帮助。
  • 您使用的教程没有谈论权限。您是否为您的 lambda 配置了权限以允许网络请求?

标签: javascript node.js aws-lambda graphql


【解决方案1】:

你能看看你使用的是什么版本的graphql-yoga包吗?

我在将 Apollo 服务器与 Kentico Cloud Headless CMS 结合使用时遇到了类似的问题,我发现了这个问题:

【讨论】:

  • 我也遇到了一些问题,在生产环境中默认关闭游乐场,您需要在创建端点时以编程方式将其打开。并且还允许自省以允许 Playground 加载架构定义。
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 2021-06-04
  • 2019-05-21
  • 2019-05-08
  • 2019-03-13
  • 2017-08-04
  • 2020-09-08
  • 2019-11-07
相关资源
最近更新 更多