Accessing non-existent property of module exports inside circular dependency @graphql-tools makeExecutableSchema

1k Views Asked by At

I am working on a nodejs and graphql project. I was using nodejs 12 for a few years. But now when I updated to nodejs 16, I am getting these warnings, but the project works as before. Below warings are generated for every graphql types.

(node:21588) Warning: Accessing non-existent property 'UpdateCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'UpdateCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'UpdateCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'UpdateCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCoursesResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCoursesResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCoursesResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCoursesResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCoursesResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GetCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'DeleCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'DeleCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'DeleCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'DeleCourseResponse' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GuidesKeyValue' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'GuidesKeyValue' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'EvalGuides' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'EvalGuides' of module exports inside circular dependency
(node:21588) Warning: Accessing non-existent property 'Fee' of module exports inside circular dependency   
(node:21588) Warning: Accessing non-existent property 'Fee' of module exports inside circular dependency   
(node:21588) Warning: Accessing non-existent property 'Lesson' of module exports inside circular dependency(node:21588) Warning: Accessing non-existent property 'Lesson' of module exports inside circular dependency(node:21588) Warning: Accessing non-existent property 'Partner' of module exports inside circular dependency

When I run --trace-warnings I got the source of the warning, it is coming from makeExecutableSchema of the @graphql-tools. What is going on here actually and how to resolve this warning?

Warning: Accessing non-existent property 'ApplyVoucherResponse' of module exports inside circular dependency
    at emitCircularRequireWarning (node:internal/modules/cjs/loader:707:11)
    at Object.get (node:internal/modules/cjs/loader:721:5)
    at MapperKind.COMPOSITE_FIELD (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\node_modules\@graphql-tools\schema\index.js:397:44)
    at mapFields (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\node_modules\@graphql-tools\utils\index.js:2577:37)
    at Object.mapSchema (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\node_modules\@graphql-tools\utils\index.js:2444:37)
    at createNewSchemaWithResolvers (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\node_modules\@graphql-tools\schema\index.js:302:20)
    at addResolversToSchema (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\node_modules\@graphql-tools\schema\index.js:192:11)
    at makeExecutableSchema (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\node_modules\@graphql-tools\schema\index.js:501:14)
    at Object.<anonymous> (E:\ProjectFolder\Office\OCA\OCA_COURSE\oca_course_server_up\graphql\index.js:7:16)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous>

This is how I merged all the types

const path = require('path');
const { loadFilesSync } = require('@graphql-tools/load-files');
const { mergeTypeDefs } = require('@graphql-tools/merge');
const typesArray = loadFilesSync(path.join(__dirname, '.'), { extensions: ['gql'], ignoreIndex: true });
const typeDefs = mergeTypeDefs(typesArray);
module.exports =  typeDefs ;

This is how I merged all the resolvers

const path = require('path');
const { loadFilesSync } = require('@graphql-tools/load-files');
const { mergeResolvers  } = require('@graphql-tools/merge');
const resolversArray = loadFilesSync(path.join(__dirname, '.'), { extensions: ['js'] });
const resolvers = mergeResolvers(resolversArray);
module.exports =  resolvers ;

I am using @graphql-tools to merge all my types and resolver like below:

const { makeExecutableSchema } = require('@graphql-tools/schema');
const  typeDefs  = require("./types/index");
const resolvers  = require("./resolvers/index");
// const { UpperCaseDirective, AuthDirective } = require('./directives');

const schema = makeExecutableSchema({
    typeDefs,
    resolvers
});

module.exports =  schema ;
0

There are 0 best solutions below