You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Node.js至23.6.0后GraphQL Codegen枚举触发strip-only模式错误

解决方法

你可以在GraphQL Codegen的配置中添加enumsAsTypes选项,让生成器把GraphQL枚举转换成TypeScript的字符串字面量联合类型(而非原生枚举),以此兼容Node.js的--experimental-strip-types模式。

修改codegen.ts配置

在每个生成目标的config字段中添加enumsAsTypes: true:

import './dotenv.js'

module.exports = {
  generates: {
    'src/generated/our-team-graphql.ts': {
      schema: [process.env.GRAPHQL_URL],
      plugins: ['typescript', 'typescript-operations', 'typescript-document-nodes'],
      overwrite: true,
      config: {
        enumsAsTypes: true // 添加该配置
      },
    },
    'src/generated/our-mobile-graphql.ts': {
      schema: {
        [process.env.MOBILE_GRAPHQL_URL]: {
          headers: {
            Authorization: `${process.env.MOBILE_GRAPHQL_AUTH_HEADER}`,
          },
        },
      },
      plugins: ['typescript', 'typescript-operations', 'typescript-document-nodes'],
      overwrite: true,
      config: {
        withMutationFn: true,
        withResultType: true,
        enumsAsTypes: true // 添加该配置
      },
    },
  },
}

原理说明

Node.js的--experimental-strip-types在strip-only模式下无法处理TypeScript原生枚举——因为枚举会被编译为JavaScript对象,而strip-only模式仅移除类型信息,不转换枚举结构。换成字符串字面量联合类型(比如type AccountTemplateStatus = 'ACTIVE' | 'INACTIVE')后,类型信息可直接被剥离,不会产生无法识别的语法。

验证修改

修改配置后,重新运行GraphQL Codegen:

npx graphql-codegen

生成的文件中原先的export enum会变为export type定义的联合类型,此时再执行Playwright测试就不会触发枚举相关的语法错误。

内容的提问来源于stack exchange,提问作者Chris S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:13:12