Я создаю приложение, в котором я использую 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())
, но это, похоже, не помогает: /
Есть идеи?