Cannot Find Module using Serverless and apollo-server-lambda/graphql

Viewed 206

I am trying to hit my graph endpoint to get the playground to pop up in my browser. The server shows from serverless that it is running by presenting me with the below figure when I do an npm start .

serverless terminal display

However, when I actually go to click on that link it gives me a 502 and spits out the following error in my terminal:

``offline: ANY /dev/graphql (λ: graphql)
offline: Failure: Cannot find module '/Users/aroe/Desktop/projects/test-serverless-backend/src/functions/graph/graphql'
Require stack:
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/index.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/handler-runner/HandlerRunner.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/handler-runner/index.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/LambdaFunction.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/LambdaFunctionPool.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/Lambda.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/lambda/index.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/ServerlessOffline.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/index.js
 - /Users/aroe/Desktop/projects/test-serverless-backend/node_modules/serverless-offline/dist/main.js
 - /opt/homebrew/lib/node_modules/serverless/lib/classes/PluginManager.js
 - /opt/homebrew/lib/node_modules/serverless/lib/Serverless.js
 - /opt/homebrew/lib/node_modules/serverless/scripts/serverless.js
 - /opt/homebrew/lib/node_modules/serverless/bin/serverless.js
 ``

I believe it is telling me that it can't find my lambda reference in my serverless.yml file BUT, the path I set is correct as shown here:

service: gamitrak-backend # service name
provider:
  name: aws # deploy to AWS
  runtime: nodejs12.x
  versionFunctions: false # disable function versioning
  region: us-west-2 # AWS region
  apiGateway:
    shouldStartNameWithService: true

functions:
  graphql:
    handler: src/functions/graph/graphql.graphqlHandler # Lambda handler path
    events:
      - http:
          path: graphql # define Lambda endpoint
          method: any # any HTTP method can access this Lambda
          cors: true # enable CORS
plugins:
  - serverless-offline

Also, here is the graphql.ts file in question for further reference:

import { ApolloServer, gql } from 'apollo-server-lambda';
import { usersTypeDefs, usersResolvers } from './schema/users';

// get the GraphQL schema

// resolver functions

const server = new ApolloServer({ typeDefs: usersTypeDefs, resolvers: usersResolvers });

// launch the server when the Lambda is called
exports.handler = server.createHandler();

1 Answers

I found a solution I added the following code to my serverless.yml

plugins:
  - serverless-offline
custom:
  serverless-offline:
    noPrependStageInUrl: true
Related