7

Context: I am trying to deploy GraphQL using Apollo Server Lambda through Netlify. My handler is as below:

Code:

exports.handler = server.createHandler({
  cors: {
    origin: '*'
  }
});

I was able to build and deploy successfully on Netlify - however the server threw an error at launch. Netlify is looking for an event to trigger but the Apollo Server handler I have used does not provide. How do we connect this handler to a handler that uses events?

Error Message:

{"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)"]}
Tom Johnson
  • 1,793
  • 1
  • 13
  • 31
Guru
  • 71
  • 2

1 Answers1

6

It looks like the request doesn't contain some AWS lambda specific event params when using Netlify CLI while @vendia/serverless-express expects them. I was able to fix a similar case in local dev environment with this:

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

exports.handler = (event, context, callback) => {
  return serverHandler(
    {
      ...event,
      requestContext: event.requestContext || {},
    },
    context,
    callback
  );
}
Jean
  • 61
  • 1
  • 3