Skip to content

Passing a Module reference to module throws Error #2476

Open
@justin-equi

Description

@justin-equi

Describe the bug
Some build systems do not expose prototype on Module, so when a caller passes a direct module interface into the module it blows up. I believe this is the actual correct behaviour for the Module object. I ran into this issue with a vitest setup. Seems unlikely this is the only situation where this might be an issue.

Example

//resolvers.ts
export const Mutation = {
  yourMutation(){
... do things.
  }
}

And then the caller sets up the module as following

import { createModule } from 'graphql-modules';

import TypeDefs from './schema.graphql';
import * as Resolvers from './resolvers';

export const YourResolverModule = createModule({
  id: 'your-resolver-module',
  dirname: __dirname,
  typeDefs: TypeDefs,
  resolvers: Resolvers,
});

Will fail with

TypeError: currentResolvers.hasOwnProperty is not a function
at mergeResolvers (file:///.node_modules/graphql-modules/index.mjs:1694:34)
at createResolvers (file://./node_modules/graphql-modules/index.mjs:1584:43)
at Object.factory (file:///./node_modules/graphql-modules/index.mjs:1971:40)
at file:///./node_modules/graphql-modules/index.mjs:1273:57
Fixes # (issue)

To Reproduce
Steps to reproduce the behavior:

//here is a repo that reproduces
https://github.com/jspears/graphql-modules-module-bug

Expected behavior
To not throw error

Environment:

  • OS: Darwin Kernel Version 23.1.0: Mon Oct 9 21:28:45 PDT 2023; root:xnu-10002.41.9~6/RELEASE_ARM64_T6020
  • @graphql-modules/graphql-modules:
  • NodeJS:18.9.1

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions