Вы просто получаете пустую страницу? Вы построили и запустили сервер на Heroku, это может быть так же просто, как сервер, не работающий на серверной части. Я покажу вам мои настройки: казалось, что Heroku потребовалось 50 коммитов, чтобы наконец-то получить правильную комбинацию, Heroku просто плохо настроен для совместной работы клиента и сервера, и это может сбить с толку, так как процесс сборки изменилlot.
Сначала в package.json, убедитесь, что у вас есть скрипт heroku-postbuild для установки и запуска клиента. Под сценариями вам нужно "heroku-postbuild": "cd client/ && npm install && npm run build"
Этот сценарий может потребоваться изменить в зависимости от того, используется ли на Mac Linux или ПК я Windows.
В моем файле индекса сервера путь к серверу Apollo указан на server.applyMiddleware({ app, path: "/graphql" });
Я использую экспресс для получения моего клиента React ...
if (process.env.NODE_ENV === "production") {
app.use(express.static("client/build"));
app.get("/*", function(req, res) {
res.sendFile(path.join(__dirname, "../client/build/index.html"));
});
} else {
app.use(express.static(path.join(__dirname, "/client/public")));
app.get("/*", function(req, res) {
res.sendFile(path.join(__dirname, "./client/public/index.html"));
});
}
Я сделал Procfile в корневой папке с единственной командой внутри web: npm run server
Heroku прослушивает этот файл для запуска команд в npmавтоматически.
В моих индексных файлах клиента Apollo у меня указан httpLink uri /graphql
. Моя ссылка на веб-сокет (которая может не иметь значения для вашего проекта) указывает непосредственно на Heroku wss://yourappname.herokuapp.com/graphql
.
Возможно, этого будет достаточно, чтобы приблизить вас к решению.