GraphQL 文档资源管理器未加载我的架构

Posted

技术标签:

【中文标题】GraphQL 文档资源管理器未加载我的架构【英文标题】:GraphQL Documentation Explorer not loading my schema 【发布时间】:2021-04-16 16:26:24 【问题描述】:

我正在尝试通过 Express 设置一个 GraphQL 方案,当我使用 Graphiql 加载它时,它不会选择架构。当我运行查询时,它说我必须提供一个查询字符串。我的代码如下。谁能发现我做错了什么?控制台中没有错误,并且文档资源管理器加载了一个永无止境的旋转加载循环。我是否以某种方式创建了一个无限循环?

这是架构:

const graphql = require('graphql');
const _= require('lodash');

const  GraphQLObjectType, GraphQLString, GraphQLSchema  = graphql;

//dummy data 

var books = [
    name: 'book1', genre: 'genre1', id: '1',
    name: 'book2', genre: 'genre2', id: '2',
    name: 'book3', genre: 'genre3', id: '3'
]

const BookType = new GraphQLObjectType(
    name: 'Book',
    fields: () => (
        id: type: GraphQLString,
        name: type: GraphQLString,
        genre: type: GraphQLString
    )
);

const RootQuery = new GraphQLObjectType(
    name: 'RootQueryType',
    fields: 
        book: 
            type: BookType,
            args: id: type: GraphQLString,
            resolve(parent, args) 
                //code to get data from db / other source
                return _.find(books, id: args.id);
            
        
    
);

module.exports = new GraphQLSchema(
    query: RootQuery
)

这是服务器:

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
require("dotenv").config();
const axios = require("axios");
const graphqlHTTP = require('express-graphql')
const schema = require('./schema/schema')

// set up our middleware
app.use(bodyParser.urlencoded( extended: true ));
app.use(express.static("server/public"));
app.use('/graphql', graphqlHTTP(
schema,
graphiql: true,
));


   //loading on port 5000
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => 
  console.log("server running on: ", PORT);
);

【问题讨论】:

当我将 graphiql 设置为 false "errors": [ "message": "Syntax Error: Unexpected <EOF>.", "locations": [ "line": 3, "column": 1 ] ] 时出现以下错误,这可能是因为它没有找到我的字符串,因为它没有找到方案查询。为什么??我的节点控制台中绝对没有错误。 我在顶部添加了 Graphiql 加载时发生的情况的屏幕截图。我再次在我的快速服务器控制台中没有错误。我在这里完全不知所措 【参考方案1】:

bodyparser 与 graphQL 不兼容。为了让它工作,我不得不删除 bodyparser 中间件。这为任何可能关注此线程的人解决了问题。

【讨论】:

以上是关于GraphQL 文档资源管理器未加载我的架构的主要内容,如果未能解决你的问题,请参考以下文章

存储资源管理器未列出 Cosmos DB 文档

graphql-tag 的 Webpack 加载器未在 Angular 8 中加载

电脑老是说资源管理器未响应是怎么了

项目资源管理器未在 Eclipse rcp 应用程序中显示项目

Android Studio 文件资源管理器未显示数据文件夹中的文件

电脑文件夹右击导致window资源管理器未响应?