graphql-modules icon indicating copy to clipboard operation
graphql-modules copied to clipboard

Passing a `Module` reference to module throws Error

Open justin-equi opened this issue 1 year ago • 1 comments

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

justin-equi avatar Dec 02 '23 20:12 justin-equi