When trying to generate graphql queries automatically for my vite app, I'm encountering this error:
18:02 $ npm run codegen
> [email protected] codegen
> graphql-codegen
/home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/vite/dist/node/chunks/dep-glQox-ep.js:37874
import.meta.require("ws").WebSocketServer :
^^^^
SyntaxError: Cannot use 'import.meta' outside a module
at new Script (node:vm:117:7)
at createScript (node:vm:269:10)
at Object.runInThisContext (node:vm:317:10)
at evalModule (/home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/jiti/dist/jiti.js:1:251724)
at jiti (/home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/jiti/dist/jiti.js:1:249841)
at /home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/vite/dist/node/index.js:2:19
at evalModule (/home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/jiti/dist/jiti.js:1:251913)
at jiti (/home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/jiti/dist/jiti.js:1:249841)
at /home/rmartinezt/Projects/cocoon-frontend/frontend/codegen.ts:12:13
at evalModule (/home/rmartinezt/Projects/cocoon-frontend/frontend/node_modules/jiti/dist/jiti.js:1:251913) {
filepath: '/home/rmartinezt/Projects/cocoon-frontend/frontend/codegen.ts'
}
Given that my codegen task is this:
graphql-codegen
Here are my relevant npm modules versions:
"@graphql-codegen/cli": "^5.0.5",
"@graphql-codegen/client-preset": "^4.7.0",
"vite": "^6.2.1"
"@vitejs/plugin-react": "^4.3.4",
And here is my node version:
v23.9.0
This is my codegen.ts file:
import { CodegenConfig } from '@graphql-codegen/cli';
import { loadEnv } from 'vite';
const env = loadEnv('development', process.cwd(), '');
const config: CodegenConfig = {
schema: [
{
'http://localhost:8081/graphql': {
headers: {
Authorization: 'Bearer ' + env.VITE_COCOON_FRONTEND_TOKEN,
},
},
},
],
documents: './src/**/*.graphql',
ignoreNoDocuments: true,
generates: {
'./src/gql/': {
preset: 'client',
},
'./src/gql/databridge/': {
schema: 'https://data-bridge-pre.informa.tools/graphql',
preset: 'client',
},
},
};
export default config;
And my tsconfig.json:
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"types": ["vite/client"]
},
"references": [{ "path": "./tsconfig.node.json" }]
}
And finally, my tsconfig.node.json file:
{
"compilerOptions": {
"composite": true,
"module": "ESNext",
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true,
},
"include": ["vite.config.ts"]
}
I have tried all sorts of changes on the different configuration files, to no avail. Always the same error appears.
I have to say that my codegen runs perfectly under node v20, but not any version higher than that.