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

Nx Monorepo中NestJS GraphQL应用无法生成最新Schema:Mutation未在Playground中显示

Nx Monorepo中NestJS GraphQL应用无法生成最新Schema:Mutation未在Playground中显示

看起来你的代码逻辑本身是没问题的,Mutation没出现在Schema里通常是几个常见的配置或缓存问题导致的,下面是几个排查和解决的方向:

1. 注册GraphQL JSON标量类型

你在ExecuteJobInput里使用了graphql-type-json提供的JSON类型,但没有在GraphQL模块中注册这个自定义标量。NestJS无法识别未注册的标量类型时,可能会静默导致Schema生成异常,最终只输出了没有问题的Query部分。

解决方法:在GraphQLModule.forRoot的配置中添加scalarsMap来注册JSON标量,修改后的app.module.ts如下:

import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { ConfigModule } from '@nestjs/config';
import { JobsModule } from './jobs.module';
import { DiscoveryModule } from '@golevelup/nestjs-discovery';
import { PrismaModule } from './prisma/prisma.module';
import JSON from 'graphql-type-json'; // 导入JSON标量
import { join } from 'path'; // 导入path模块用于拼接路径

@Module({
  imports: [
    ConfigModule.forRoot({ isGlobal: true }),
    DiscoveryModule,
    PrismaModule,
    GraphQLModule.forRoot<ApolloDriverConfig>({
      driver: ApolloDriver,
      autoSchemaFile: join(process.cwd(), 'apps/jobber-jobs/src/schema.gql'), // 指定具体的Schema生成路径
      debug: true,
      playground: {
        settings: { 'request.credentials': 'include' },
      },
      scalarsMap: [ // 注册JSON标量
        { type: JSON, scalar: JSON },
      ],
    }),
    JobsModule,
  ],
})
export class AppModule {}

2. 明确指定Schema文件的生成路径

在Nx Monorepo结构下,autoSchemaFile: true默认会将Schema文件生成在项目根目录,而不是当前应用的src目录中。这会导致Playground加载的是旧的缓存Schema,而非最新生成的包含Mutation的版本。

上面的代码已经通过join(process.cwd(), 'apps/jobber-jobs/src/schema.gql')指定了准确的路径,确保NestJS能正确生成并更新当前应用的Schema文件。

3. 清理Nx缓存并重启服务

Nx的构建缓存可能会复用旧的编译结果,导致新的Resolver代码没有被正确扫描到。运行以下命令清理缓存:

nx reset

之后重启你的应用服务:

nx serve jobber-jobs

4. 验证Resolver的注册正确性

虽然你的代码里已经将JobsResolver添加到了JobsModule的providers数组中,但可以再快速确认两点:

  • JobsModule确实在AppModule的imports数组中,没有被条件性导入(比如仅在特定环境下导入);
  • JobsResolver上的@Resolver(() => JobMetadata)装饰器配置正确,没有拼写错误。

按照上面的步骤调整后,你的Mutation应该就能正常出现在GraphQL Playground的Schema中了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 13:04:29