serverless-appsync-simulator
serverless-appsync-simulator copied to clipboard
AppSync Simulator: TypeError: Cannot convert undefined or null to object
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:
Versions:
"serverless-appsync-plugin": "^1.13.0",
"serverless-appsync-simulator": "^0.20.0",
"serverless-dynamodb-local": "^0.2.40",
"serverless-offline": "^8.8.0"
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
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.
Thank you for responding
I finally fixed it..
Had to switch to npm
and remove serverless-plugin-typescript
>.<
I don't have serverless-plugin-typescript
installed here. How did you guys solve this?
Just started a new project and get this error also. Any updates?
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.
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;
}
Thank you @katesclau
Could you open a PR to fix this? That would be great.
Thanks
in npm I just installed cfn-resolver-lib "1.1.7" explicitly and it helped