serverless-appsync / serverless-appsync-simulator

A simple wrapper around Amplify AppSync Simulator to test serverless AppSync Apis
MIT License
127 stars 69 forks source link

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

Open jamsmd opened 2 years ago

jamsmd commented 2 years ago

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 commented 2 years ago

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

snadeau commented 2 years ago

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.

jamsmd commented 2 years ago

Thank you for responding

I finally fixed it..

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

ericmaicon commented 2 years ago

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

allycallow commented 2 years ago

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

snadeau commented 2 years ago

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.

katesclau commented 2 years ago

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;
  }
bboure commented 1 year ago

Thank you @katesclau

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

Thanks

sergueidmitriev commented 1 year ago

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

QAnders commented 1 month ago

I can also confirm adding:

npm i cfn-resolver-lib@1.1.7 --save-dev

solves the issue!