Отсутствует запрос GET: реализация GraphQL с использованием Apollo на сервере Express - PullRequest
0 голосов
/ 19 января 2019

Я следую учебному пособию здесь: Реализация GraphQL с использованием Apollo на сервере Express , и я получаю ошибку GET отсутствует запрос в браузере на http://localhost:7700/graphql.

Сначала я сам набрал весь код. Когда я обнаружил ошибку, я скачал код с GitHub: kimobrian / GraphQL-Express: сервер Express, реализованный с использованием GraphQL , чтобы исключить вероятность того, что я допустил ошибку. Тем не менее, я все еще получаю ту же ошибку.

Я предполагаю, что лучше предоставить ссылку на репо, чем вставлять код здесь, потому что я использую тот же код из репо. Кроме того, я не уверен, какой файл может содержать проблему.

$ npm start

> tutorial-server@1.0.0 start kimobrian/GraphQL-Express.git
> nodemon ./server.js --exec babel-node -e js

[nodemon] 1.18.9
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `babel-node ./server.js`
GraphQL Server is now running on http://localhost:7700

Ошибка: GET-запрос отсутствует в браузере на http://localhost:7700/graphql. То же самое в Firefox и Chromium.

Обновление: единственный вопрос, который я нахожу с соответствующей информацией, находится здесь: nodejs с Graphql . Предлагаемое решение

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

Однако, это именно тот код, который у меня уже есть (из учебника). Вот весь мой server.js:

import express from 'express';
import cors from 'cors';

import {
    graphqlExpress,
    graphiqlExpress,
} from 'graphql-server-express';

import bodyParser from 'body-parser';

import { schema } from './src/schema';

const PORT = 7700;
const server = express();
server.use('*', cors({ origin: 'http://localhost:7800' }));

server.use('/graphql', bodyParser.json(), graphqlExpress({
    schema
}));

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

server.listen(PORT, () =>
    console.log(`GraphQL Server is now running on http://localhost:${PORT}`)
);

1 Ответ

0 голосов
/ 19 января 2019

Как API, так и само имя пакета изменились с момента написания этого руководства (пакет теперь apollo-server-express). Вам больше не нужно импортировать cors или body-parser. Самый простой способ начать работу - просто использовать apollo-server:

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

const port = 7700;

server.listen({ port });

Если вы все еще хотите применить другое промежуточное программное обеспечение самостоятельно, вы можете использовать apollo-server-express:

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

const app = express();
server.applyMiddleware({ app });

const port = 7700;

app.listen({ port });

Пожалуйста, проверьте официальные документы для более подробной информации.

...