Сервер Apollo отвечает с ошибкой 503 после развертывания в Heroku - PullRequest
2 голосов
/ 31 марта 2020

Так что мой сервер Apollo graphql отлично работал в разработке. Я только что развернул свой проект в Heroku, и теперь при выполнении любых запросов я получаю ошибку 503.

Я могу попасть в песочницу graphiql, но эти ответы возвращаются как:

SyntaxError: Unexpected token < in JSON at position 0

Я использую express для своего сервера, и вот как выглядит код:

app.use(cors());

app.use(

  '/graphql',

  graphqlHTTP({

    schema: pgSchema,

    graphiql: true

  })

);

app.use(express.static('../public'));

app.get('*', (req, res) => {

  res.sendFile(path.resolve(__dirname, '../public', 'index.html'));

});

Вот где я подключаю свой клиент Apollo в проекте React:

const client = new ApolloClient({
  uri: '/graphql'
});

function App() {
  return (
    <ApolloProvider client={client}>
      <Router>
        <Route exact path='/' component={Login} />
        <Route exact path='/home' component={Home} />
      </Router>
    </ApolloProvider>
  );
}

Вот мои логи герою из graphql:

2020-03-31T16:41:23.780542+00:00 heroku[router]: at=info method=POST path="/graphql" host=damp-ravine-76294.herokuapp.com request_id=a9e695db-63eb-476a-950f-a5d6561ff85f fwd="76.116.11.127" dyno=web.1 connect=1ms service=21ms status=200 bytes=21933 protocol=https
2020-03-31T16:45:50.392011+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/graphql" host=damp-ravine-76294.herokuapp.com request_id=650a1d7d-7f9e-4c66-8a5d-000fc60ed29a fwd="76.116.11.127" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 protocol=https

Пожалуйста, дайте мне знать, если у вас есть идеи. Спасибо!

1 Ответ

0 голосов
/ 31 марта 2020

Из документов :

Веб-запросы, обрабатываемые Heroku, направляются вашим динамостам через несколько маршрутизаторов Heroku. Эти запросы предназначены для быстрого обслуживания вашего приложения. Рекомендуется, чтобы время отклика вашего веб-приложения было менее 500 мс, это освободит приложение от дополнительных запросов и обеспечит высококачественный пользовательский опыт для ваших посетителей. Иногда веб-запрос может зависнуть или занять слишком много времени для обработки вашего приложения. Когда это происходит, маршрутизатор завершит запрос, если для его завершения потребуется более 30 секунд.

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

...