-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
Hi,
I am trying to correctly boostrap the lambda so that it waits until the server is ready. I am using apollo-server-express to host a GraphQL endpoint.
With an app.ts similar to:
const app = express()
const startApolloServer = async () => {
const driver = neo4j.driver(
NEO4J_URL,
neo4j.auth.basic(NEO4J_USERNAME, NEO4J_PASSWORD)
)
const neoSchema = new Neo4jGraphQL({
typeDefs,
driver,
})
const server = new ApolloServer({
schema: neoSchema.schema,
context: ({ req }) => ({ req }),
})
await server.start()
server.applyMiddleware({ app })
await new Promise((resolve: (reason?: any) => void) =>
app.listen({ port: 4000 }, resolve)
)
console.log(
`🚀 Server ready at http://localhost:${PORT}${server.graphqlPath}`
)
return { server, app }
}
module.exports = app
This works but obviously when there is a cold start the lambda is not initially ready as startApolloServer has not completed.
I need to await startApolloServer() during module initialisation. Everything I have tried has not achieved the desired result. What is the recommended best practice in this scenario?
Thanks,
Mark
Metadata
Metadata
Assignees
Labels
No labels