错误:正文必须是字符串。使用 Type-graphql 和 apollo-server-express 时收到: resolvers: [[function HelloResolver]], vali

Posted

技术标签:

【中文标题】错误:正文必须是字符串。使用 Type-graphql 和 apollo-server-express 时收到: resolvers: [[function HelloResolver]], validate: false【英文标题】:Error: Body must be a string. Received: resolvers: [[function HelloResolver]], validate: false when using Type-graphql and apollo-server-express错误:正文必须是字符串。使用 Type-graphql 和 apollo-server-express 时收到: resolvers: [[function HelloResolver]], validate: false 【发布时间】:2021-09-13 17:11:24 【问题描述】:

我一直在关注这个full-stack tutorial by Ben Awad 当他向架构添加解析器时,一切都很顺利,但是当我尝试完全相同的代码时,我得到了上面的错误。我正在使用带有 apollo-server-express 版本 2.25.2 的 graphql 15.5.1 和 type-graphql 1.1.1。我的代码如下所示:

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";

你可以在the same code linked in the video description看到。

【讨论】:

以上是关于错误:正文必须是字符串。使用 Type-graphql 和 apollo-server-express 时收到: resolvers: [[function HelloResolver]], vali的主要内容,如果未能解决你的问题,请参考以下文章

oauth2错误AADSTS90014:请求正文必须包含以下参数:'grant_type'

致命错误:非抽象方法 NF_Handlers_FieldsetRepeater::isFieldsetData() 必须包含正文

PlayFramework:以字符串形式获取原始请求 xml 正文

在错误情况下从 WebClient 获取响应正文的正确方法是啥?

在 axios catch 子句中访问 HTTP 错误正文数据 [重复]

在正文中搜索字符串,然后搜索样式