Skip to content
This repository was archived by the owner on May 17, 2025. It is now read-only.

Cannot read property 'definitions' of undefined #313

@beex333

Description

@beex333

Hello, I'm trying to set up my WebSocket server however I'm getting this error on my CloudWatch logs for my lambda function:

Reason: TypeError: Cannot read property 'definitions' of undefined

{
    "errorType": "GoneException",
    "errorMessage": "410",
    "code": "GoneException",
    "message": "410",
    "statusCode": 410,
    "time": "2023-01-24T08:29:17.212Z",
    "requestId": "75e1aa0a-28c3-460a-a879-21271cd308a4",
    "retryable": false,
    "retryDelay": 69.89051258006047,
    "stack": [
        "GoneException: 410",
        "    at Object.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:52:27)",
        "    at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/rest_json.js:61:8)",
        "    at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",
        "    at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",
        "    at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:686:14)",
        "    at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)",
        "    at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)",
        "    at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10",
        "    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)",
        "    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:688:12)",
        "    at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)",
        "    at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",
        "    at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:686:14)",
        "    at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)",
        "    at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)",
        "    at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10",
        "    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)",
        "    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:688:12)",
        "    at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)",
        "    at callNextListener (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:96:12)",
        "    at IncomingMessage.onEnd (/var/task/node_modules/aws-sdk/lib/event_listeners.js:417:13)",
        "    at IncomingMessage.emit (events.js:412:35)"
    ]
}

Does anyone know how to fix this? I'm not sure where the error is coming from. This is the code for my handler

handler.js

const AWS = require('aws-sdk')
AWS.config.update({region: 'XXX'})
const dynamodb = new AWS.DynamoDB()
const { makeServer, subscribe } = require('graphql-lambda-subscriptions')
const schema = require("./../../lib/schema")
const createQueryContext = require("./../../lib/utils/createQueryContext")
const schemaPermissions = require("./../../lib/schema/security/schemaPermissions");
const { applyMiddleware } = require("graphql-middleware")

const subscriptionServer = makeServer({
    schema: applyMiddleware(schema, schemaPermissions),
    dynamodb,
    tableNames: {
        connections: 'XXX',
        subscriptions: 'XXX'
    },
    context: (event) => {
        const { connectionInitPayload, connectionId, publish, complete } = event
        console.log(event)
        if (connectionInitPayload.token) return createQueryContext({ Authorization: connectionInitPayload.token })
        else return null
    },
    onConnect: (event) => {
        console.log(event)
    },
    onDisconnect: (event) => {
        console.log(event)
    },
    onConnectionInit: async ({ event }) => {
        const { requestContext, body, isBase64Encoded } = event
        const { type, payload } = JSON.parse(body)
        let tPayload = JSON.parse(body)
        //! Validation needed here
        console.log(JSON.parse(body))
        if (tPayload?.payload?.headers?.Authorization) {
            return {
                token: tPayload?.payload?.headers?.Authorization
            }
        } else return { ...tPayload }
    },
    onError: (error, context) => {
        console.error('ERROR! - Websocket handler has encountered an error. Reason: ' + error)
        console.error(JSON.stringify(error))
    },
    onPing: (event, message) => {
        console.log(event)
    },
    onPong: (event, message) => {
        console.log(event)
    },
})

module.exports.handler = subscriptionServer.webSocketHandler

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions