You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
try to fix compatibility with Gatsby and our Apollo fix to use ESM - #114
this patch breaks Gatsby "results" app, so currently we don't use PNPM but Yarn just for Gatsby
Repro:
pnpm install
cd results && pnpm run build
won't work
Stuck at:
Error: [ERR_REQUIRE_ESM]: require() of ES Module /code/devographics/monorepo/node_modules/.pnpm/@apollo+client@3.6.9_react@18.2.0/node_modules/@apollo/client/index.js from /code/devographics/monorepo/node_modules/.pnpm/@graphql-tools+links@8.3.7_@apollo+client@3.6.9/node_
modules/@graphql-tools/links/cjs/createServerHttpLink.js not supported.
Instead change the require of index.js in /code/devographics/monorepo/node_modules/.pnpm/@graphql-tools+links@8.3.7_@apollo+client@3.6.9/node_modules/@graphql-tools/links/cjs/createServerHttpLink.js to a dynamic import() which is available in all CommonJS modules.
- createServerHttpLink.js:6 Object.<anonymous>
[monorepo]/[@graphql-tools+links@8.3.7_@apollo+client@3.6.9]/[@graphql-tools]/links/cjs/createServerHttpLink.js:6:43
This is probably because gatsby-source-graphql is not using ESM. It then uses the CJS version of @graphql-tools/links, which however will somehow try to load the ESM version of Apollo Client when we apply our patch
If I remove "type":"module" from Apollo Client package.json, I still hit:
If I remove "type": "module" and the patched export map:
Error: [ERR_REQUIRE_ESM]: require() of ES Module /code/devographics/monorepo/node_modules/.pnpm/ts-invariant@0.10.3/node_modules/ts-invariant/lib/invariant.js from /code/devographics/monorepo/node_modules/.pnpm/@apollo+client@3.6.9_react@18.2.0/node_modules/@apollo/client
/utilities/globals/globals.cjs not supported.
Instead change the require of invariant.js in /code/devographics/monorepo/node_modules/.pnpm/@apollo+client@3.6.9_react@18.2.0/node_modules/@apollo/client/utilities/globals/globals.cjs to a dynamic import() which is available in all CommonJS modules.
This is because we also patch "ts-invariant".
So basically I have to remove the patch altogether to have no exports map in Apollo Client, but then that breaks the ESM build of Next.js when using Vulcan packages.
Best solution might be to rewrite "gatsby-source-graphql" to not use Apollo client. Apollo is most probably very overkill here, any graphql lib that works server side and that has basic caching should work.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current state of things:
Repro:
Stuck at:
This is probably because
gatsby-source-graphqlis not using ESM. It then uses the CJS version of @graphql-tools/links, which however will somehow try to load the ESM version of Apollo Client when we apply our patchIf I remove "type":"module" from Apollo Client package.json, I still hit:
If I remove "type": "module" and the patched export map:
This is because we also patch "ts-invariant".
So basically I have to remove the patch altogether to have no exports map in Apollo Client, but then that breaks the ESM build of Next.js when using Vulcan packages.
Best solution might be to rewrite "gatsby-source-graphql" to not use Apollo client. Apollo is most probably very overkill here, any graphql lib that works server side and that has basic caching should work.