Я написал простой сервер GraphQL с помощью Apollo Express и развернул его на Heroku. После некоторого возни с Procfiles и т.п. он собрался нормально.
Когда я нажимаю основной URL-адрес https://limitless-atoll-59109.herokuapp.com, я получаю сообщение об ошибке
Cannot GET /
Хорошо, тогда я подумал, что сервер Express просто ищет доступ к конечной точке graphql. Но когда я нажимаю https://limitless-atoll-59109.herokuapp.com/graphql, я получаю
GET query missing.
Нужно ли указывать порт в URL-адресе? У меня правильно указан порт в коде
const PORT = process.env.PORT || 4000
app.listen({port: PORT}, () =>
console.info(`Server ready at http://localhost:${PORT}${server.graphqlPath}`)
);
но я не думаю, что мне нужно включать его при доступе к серверу на Heroku, не так ли?
Для чего это стоит, это ошибка в журналах ошибок
019-05-08T17:07:41.492327+00:00 heroku[router]: at=info method=GET path = "/graphql" host=limitless-atoll-59109.herokuapp.com request_id=b6171835-aac4-4b45-8a7b-daebbb3167ed fwd = "139.47.21.74" dyno=web.1 connect=0ms service=900ms status=400 bytes=196 protocol=https
Спасибо за любую помощь!





Ответ заключается в том, что это является URL-адрес, оканчивающийся на /graphql, который вам нужен. Однако, когда вы переходите по этому URL-адресу из браузера, он пытается загрузить игровую площадку и терпит неудачу, поскольку игровая площадка по умолчанию отключена в рабочей среде.
Однако вы можете выполнять вызовы graphql для этого URL-адреса из своего клиентского приложения, и все работает нормально.
Если вы используете сервер apollo, вы можете просто включить его в рабочей среде:
const server = new ApolloServer({
typeDefs,
resolvers,
introspection: true,
playground: true,
});