Использование express в качестве промежуточного программного обеспечения на сервере apollo приводит к ошибке синтаксического анализа JSON - PullRequest
1 голос
/ 09 мая 2020

Я создаю приложение, в котором я использую graphql и реагирую на него вместе с apollo. Когда мой серверный код не использует express, я могу успешно запрашивать с сервера, используя import { useQuery } from '@apollo/react-hooks';. Однако мне требуется express, чтобы иметь возможность добавлять промежуточное ПО и аутентифицировать пользователей. Это вызывает: Ошибка! Ошибка сети: JSON Ошибка синтаксического анализа: нераспознанный токен '<' </strong>

Работает с этим кодом ниже (без express)

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  type Book {
    title: String
    author: String
  }

  type Query {
    books: [Book]
  }
`;

const books = [
  {
    title: 'Harry Potter and the Chamber of Secrets',
    author: 'J.K. Rowling',
  },
  {
    title: 'Jurassic Park',
    author: 'Michael Crichton',
  },
];

const resolvers = {
  Query: {
    books: () => books,
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

server.listen({ port:4000 }, () => {
  console.log(`? Server ready at http://localhost:4000${server.graphqlPath}`);
});

-

Принимая во внимание, что приведенный ниже код вызывает ошибку

const { ApolloServer, gql } = require('apollo-server-express')
const express = require('express');

const typeDefs = gql`
  type Book {
    title: String
    author: String
  }

  type Query {
    books: [Book]
  }
`;

const books = [
  {
    title: 'Harry Potter and the Chamber of Secrets',
    author: 'J.K. Rowling',
  },
  {
    title: 'Jurassic Park',
    author: 'Michael Crichton',
  },
];

const resolvers = {
  Query: {
    books: () => books,
  },
};

const app = express();

const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app, path: '/graphql' });

app.listen({ port:4000 }, () => {
  console.log(`? Server ready at http://localhost:4000${server.graphqlPath}`);
});

Если это проблема синтаксического анализа, как мне правильно проанализировать данные? Я пробовал

app.use(bodyParser.json())
app.use(bodyParser.raw())
app.use(bodyParser.urlencoded())
app.use(bodyParser.text())

, но это, похоже, не помогает: /

Есть идеи?

...