Ошибка: Тело должно быть строкой. Получено: { распознаватели: [[функция HelloResolver]], проверка: ложь } при использовании Type-graphql и apollo-server-express

#javascript #typescript #express #graphql #apollo-server

Вопрос:

Я следовал этому учебнику по полному стеку Бена Авада, и когда он добавил распознаватель в схему, все прошло хорошо, но когда я попробовал тот же код, я получил ошибку выше. Я использую graphql 15.5.1 и тип-graphql 1.1.1 с версией apollo-server-express 2.25.2. Мой код выглядит следующим образом:

 import {Query, Resolver} from "type-graphql";

@Resolver()
export class HelloResolver {
    @Query(() => Number)
    hello() {
        return 5;
    }
} 
 import { ApolloServer } from "apollo-server-express";
import { buildSchema } from "graphql";
import {HelloResolver} from "./resolvers/hello";

const express = require('express');
const PORT : number = Number(process.env.PORT) || 3000;

const main = async () => {
    const apollo = new ApolloServer({
        schema: await buildSchema({
            // ERROR DUE TO LINE BELOW
            resolvers: [HelloResolver],
            validate: false,
        }),
    });

    apollo.applyMiddleware({ app });

    app.listen(PORT, () => {
        console.log(`Listening on port ${PORT}...`);
    });
}

main().catch((e) => {
    console.error(e);
}); 

Ответ №1:

 import { buildSchema } from "graphql";
 

должно быть

 import { buildSchema } from "type-graphql";
 

Вы можете увидеть это в том же коде, что и в описании видео.