Apollo Server 的无服务器处理程序抛出错误,无法识别 Netlify 上的事件

Gur*_*uru 7 graphql netlify apollo-server serverless

上下文: 我正在尝试通过 Netlify 使用 Apollo Server Lambda 部署 GraphQL。我的处理程序如下:

代码:

exports.handler = server.createHandler({
  cors: {
    origin: '*'
  }
});
Run Code Online (Sandbox Code Playgroud)

我能够在 Netlify 上成功构建和部署 - 但是服务器在启动时抛出错误。Netlify 正在寻找要触发的事件,但我使用的 Apollo Server 处理程序没有提供。我们如何将此处理程序连接到使用事件的处理程序?

错误信息:

{"errorType":"Error","errorMessage":"Unable to determine event source based on event.","trace":["Error: Unable to determine event source based on event.","    at getEventSourceNameBasedOnEvent (/var/task/node_modules/@vendia/serverless-express/src/event-sources/utils.js:88:9)","    at proxy (/var/task/node_modules/@vendia/serverless-express/src/configure.js:38:51)","    at handler (/var/task/node_modules/@vendia/serverless-express/src/configure.js:99:12)","    at Runtime.handler (/var/task/node_modules/apollo-server-lambda/dist/ApolloServer.js:51:27)"]}
Run Code Online (Sandbox Code Playgroud)

Jea*_*ean 6

使用 Netlify CLI 时,请求似乎不包含某些AWS lambda 特定事件参数,而@vendia/serverless-express 需要它们。我能够通过以下方式修复本地开发环境中的类似情况:

const serverHandler = server.createHandler({
  cors: {
    origin: '*'
  }
});

exports.handler = (event, context, callback) => {
  return serverHandler(
    {
      ...event,
      requestContext: event.requestContext || {},
    },
    context,
    callback
  );
}
Run Code Online (Sandbox Code Playgroud)