serverless-appsync-simulator icon indicating copy to clipboard operation
serverless-appsync-simulator copied to clipboard

AppSync Simulator: TypeError: Cannot convert undefined or null to object

Open jamsmd opened this issue 2 years ago • 9 comments

Describe the bug When following these steps: https://www.npmjs.com/package/serverless-appsync-simulator I try to run sls offline start and it gives me the following error: AppSync Simulator: TypeError: Cannot convert undefined or null to object

To Reproduce I created a new serverless project with the aws-http-api template. Follow these steps: https://www.npmjs.com/package/serverless-appsync-simulator

So I ran

yarn install -D serverless-appsync-simulator serverless-offline serverless-dynamodb-local serverless-appsync-plugin

added a schema.graphql in the root

Added the plugins in following order:

plugins:
  - serverless-dynamodb-local # only if you need dynamodb resolvers and you don't have an external dynamodb
  - serverless-appsync-plugin
  - serverless-appsync-simulator
  - serverless-offline

Expected behavior I expect it to spit out the urls like this: image

Versions:

    "serverless-appsync-plugin": "^1.13.0",
    "serverless-appsync-simulator": "^0.20.0",
    "serverless-dynamodb-local": "^0.2.40",
    "serverless-offline": "^8.8.0"


jamsmd avatar Jun 28 '22 08:06 jamsmd

Also found this question: https://stackoverflow.com/questions/72695038/appsync-simulator-typeerror-cannot-convert-undefined-or-null-to-object

The solution did not resolve it for me

jamsmd avatar Jun 28 '22 08:06 jamsmd

I ran into the same issue. The solution proposed at https://stackoverflow.com/questions/72695038/appsync-simulator-typeerror-cannot-convert-undefined-or-null-to-object (downgrading cfn-resolver-lib from 1.1.8 to 1.1.7) did resolve the issue in my case.

snadeau avatar Jun 29 '22 04:06 snadeau

Thank you for responding

I finally fixed it..

Had to switch to npm and remove serverless-plugin-typescript >.<

jamsmd avatar Jun 29 '22 13:06 jamsmd

I don't have serverless-plugin-typescript installed here. How did you guys solve this?

ericmaicon avatar Jul 06 '22 17:07 ericmaicon

Just started a new project and get this error also. Any updates?

allycallow avatar Jul 08 '22 11:07 allycallow

I'm using yarn, so I added the following to my package.json to force the use of the previous version of cfn-resolver-lib:

"resolutions": {
    "serverless-appsync-simulator/cfn-resolver-lib": "1.1.7"
}

Not sure what the equivalent would be with npm.

snadeau avatar Jul 09 '22 02:07 snadeau

Another option is to update serverless-appsync-simulator/lib/index.js

  resolveResources(toBeResolved) {
    // Pass all resources to allow Fn::GetAtt and Conditions resolution
    const node = { ...this.serverless.service.resources,
      toBeResolved,
      Parameters: {}, // Passing {} would avoid the issue on latest cnf-resolver-lib version
    };
    const evaluator = new _cfnResolverLib.default(node, this.resourceResolvers);
    const result = evaluator.evaluateNodes();

    if (result && result.toBeResolved) {
      return result.toBeResolved;
    }

    return toBeResolved;
  }

katesclau avatar Jul 25 '22 09:07 katesclau

Thank you @katesclau

Could you open a PR to fix this? That would be great.

Thanks

bboure avatar Oct 13 '22 13:10 bboure

in npm I just installed cfn-resolver-lib "1.1.7" explicitly and it helped

sergueidmitriev avatar Oct 15 '22 02:10 sergueidmitriev