GraphQL / Apollo: «Нет доступных схем». NodeJS - PullRequest
0 голосов

Я пытаюсь работать с GraphQL / Apollo, и мой "Проводник документации" загружается бесконечно и ничего не показывает, и я не могу делать какие-либо запросы.

enter image description here

Через несколько минут я получил ошибку типа "Failed to fetch".

Вот мой graphql/index.js файл:

const { graphqlExpress, graphiqlExpress } = require('apollo-server-express');
const { makeExecutableSchema } = require('graphql-tools');
const User = require('../models/user.model');

const typeDefs = `

  type Query {
    users: [User]
  }

  type User {
    id: ID!
    name: String
    email: String
    password: String
  }

`;

const resolvers = {
  Query: {
    users() {
      return User.find({});
    }
  }
}

const schema = makeExecutableSchema({
  typeDefs,
  resolvers,
});

module.exports = (app) => {
  app.use('/graphql', () => { }, graphqlExpress({ schema }));

  app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' }));
};

Консоль и DevTools оба очищены. Может кто-нибудь объяснить, что не так? Спасибо!

1 Ответ

0 голосов
/ 06 мая 2018

Немного неясно, чего вы пытались достичь, но вы добавили промежуточное программное обеспечение для вашего /graphql маршрута, которое ничего не делает:

app.use('/graphql', () => { }, graphqlExpress({ schema }))

Вставленная вами функция вызывается каждый раз, когда что-то попадает на маршрут /graphql, и поскольку ваша функция не вызывает next и не завершает ответ, следующее промежуточное ПО (graphqlExpress) никогда не вызывается и запрос просто виснет.

Другая проблема заключается в том, что graphqlExpress требует, чтобы промежуточное программное обеспечение bodyParser запускалось до его вызова. Это означает, что вы можете сделать либо:

const bodyParser = require('body-parser')

// Option A -- body parser will run prior to all routes after this point
app.use(bodyParser.json())

// Option B -- body parser will only run for the graphql route
app.use('/graphql', bodyParser.json(), graphqlExpress({ schema }))

Если вы не включите bodyParser, graphqlExpress обычно будет жаловаться и сообщать вам столько, сколько вы на самом деле достигнете.

...