Git Product home page Git Product logo

type-graphql-demo's Introduction

TYPE-GRAPHQL @FieldResolver error

(node:1336) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'fields' of undefined at definitions.forEach.def (C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\metadata\metadata-storage.js:132:52) at Array.forEach () at MetadataStorage.buildFieldResolverMetadata (C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\metadata\metadata-storage.js:122:21) at MetadataStorage.build (C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\metadata\metadata-storage.js:77:14) at Function.generateFromMetadataSync (C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\schema\schema-generator.js:33:51) at Function. (C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\schema\schema-generator.js:22:33) at Generator.next () at C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\schema\schema-generator.js:7:71 at new Promise () at __awaiter (C:\Users\User\examples\type-graphql-demo\node_modules\type-graphql\schema\schema-generator.js:3:12) (node:1336) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)(node:1336) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

here is the function that throws the error (compiled in js)

        this.buildResolversMetadata(definitions);
        definitions.forEach(def => {
            def.roles = this.findFieldRoles(def.target, def.methodName);
            def.getObjectType =
                def.kind === "external"
                    ? this.resolverClasses.find(resolver => resolver.target === def.target).getObjectType
                    : () => def.target;
            if (def.kind === "external") {
                const objectTypeCls = this.resolverClasses.find(resolver => resolver.target === def.target)
                    .getObjectType();
                const objectType = this.objectTypes.find(objTypeDef => objTypeDef.target === objectTypeCls);
                const objectTypeField = objectType.fields.find(fieldDef => fieldDef.name === def.methodName);
                if (!objectTypeField) {
                    if (!def.getType || !def.typeOptions) {
                        throw new errors_1.NoExplicitTypeError(def.target.name, def.methodName);
                    }
                    const fieldMetadata = {
                        name: def.methodName,
                        schemaName: def.schemaName,
                        getType: def.getType,
                        target: objectTypeCls,
                        typeOptions: def.typeOptions,
                        deprecationReason: def.deprecationReason,
                        description: def.description,
                        roles: def.roles,
                        middlewares: def.middlewares,
                        params: def.params,
                    };
                    this.collectClassFieldMetadata(fieldMetadata);
                    objectType.fields.push(fieldMetadata);
                }
                else {
                    if (objectTypeField.params.length === 0) {
                        objectTypeField.params = def.params;
                    }
                    if (def.roles) {
                        objectTypeField.roles = def.roles;
                    }
                    else if (objectTypeField.roles) {
                        def.roles = objectTypeField.roles;
                    }
                }
            }
        });
    }

Somehow the following line is producing an undefined object:

const objectType = this.objectTypes.find(objTypeDef => objTypeDef.target === objectTypeCls);

type-graphql-demo's People

Contributors

kristijanjovanovski avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.