#reactjs #heroku #deployment #graphql #apollo
#reactjs #heroku #развертывание #graphql #apollo
Вопрос:
У меня есть приложение с полным стеком, которое использует React во внешнем интерфейсе и GraphQL yoga во внутреннем интерфейсе. Я пытаюсь развернуть приложение в Heroku, но я не могу получить доступ к своему интерфейсу. Когда я перехожу по URL Heroku, все, что я вижу, — это игровая площадка GraphQL.
Вот что у меня есть, что запускает мой сервер:
const options = {
port: process.env.PORT || 4000
}
server.start(options, ({ port }) =>
console.log(
`Server started, listening on port ${port} for incoming requests.`,
),
)
Во внешнем интерфейсе у меня есть это, которое подключает его к моему серверу:
const client = new ApolloClient({
uri: "http://localhost:4000"
})
Но я не знаю, как запустить все это на Heroku.
Комментарии:
1. Включаете ли вы uri: » localhost: 4000 » в свой интерфейс при его публикации в heroku?
2. Что вы имеете в виду, включая это? Вы имеете в виду специальную конфигурацию? Извините, я никогда раньше не развертывал Heroku
3. Если вы установите uri как
(const client = new ApolloClient({uri: "http://localhost:4000"}))
, это не будет работать на heroku, потому что ваше серверное приложение не запущено на localhost: 4000 heroku. Также вы пытаетесь обслуживать страницу react, используя тот же сервер graphql?4. О, да, у меня это есть в моем клиенте. На что я должен это изменить? И да, я пытаюсь обслуживать страницу react с помощью сервера, если только нет лучшего способа сделать это.
Ответ №1:
Измените свой uri ApolloClient на:
const client = new ApolloClient({
uri: "/graphql"
})
затем разверните его снова.
Если вы используете create-react-app, вам следует добавить прокси для вашего клиента для использования в разработке:
В вашем setupProxy.js файл:
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/',
{ target: 'http://localhost:4000' } //your server
));
}
Надеюсь, это поможет.