#heroku #deployment #mern
Вопрос:
Я борюсь с развертыванием веб-приложения в Heroku. Все вроде нормально, ошибок не видно, но я получаю только пустую страницу.
Я искал в Интернете и перепробовал все, что видел, но, похоже, не могу найти ответ.
server.js:
app.use(express.static(path.join(__dirname, '../frontend/build')));
app.get('*', (req, res) =>
res.sendFile(path.join(__dirname, '../frontend/build/index.html'))
);
папки:
Я не знаю, что еще прикрепить, просто скажите мне, и я предоставлю это. Заранее большое вам спасибо, это действительно очень важно для меня
Комментарии:
1. Является ли пустая страница, о которой вы упомянули
Application-Error (Error Heroku Logs) Page
в Heroku, пустой страницей?2. Всем привет. Нет, это просто пустая страница 🙁
3. Работает ли какой-нибудь из ваших других маршрутов?
4. нет, все пустое. (просто чтобы сказать: локально это работает идеально)
5. Эй, @pop, я добавил ответ ниже. Я думаю, тебе следует переодеться
('*')
('/*')
в свою server.js.
Ответ №1:
Обычно,
Если вы хотите развернуть все свое приложение MERN в Heroku, сначала добавьте heroku-postbuild
скрипт в package.json
В вашем случае, так как у вас есть каталоги frontend
, backend
содержащие клиент и сервер соответственно.
Добавьте эти скрипты в свой package.json
, эти скрипты будут build
вашим интерфейсом react после нажатия на heroku.
...
"scripts": {
"install-client":"cd frontend amp;amp; npm install"
"heroku-postbuild": "npm run install-client amp;amp; npm run build"
}
...
Теперь в вашем server.js
файле,
...
const path = require('path');
app.use(express.static(path.join(__dirname, '../frontend/build')));
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, '../frontend/build', 'index.html'));
});
...
Теперь, если вам нужно использовать маршрутизацию на стороне клиента (маршрутизатор React), обновите /
/*
, как показано ниже,
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, '../frontend/build', 'index.html'));
});
Я думаю, что это должно решить проблему.
Обратитесь: https://create-react-app.dev/docs/deployment/
Комментарии:
1. Эй!! Только что видел это. Большое вам спасибо за вашу помощь. Мне удается решить проблему, но я все еще не уверен, как это сделать, ха-ха-ха. Я думаю, проблема заключалась в том, что у меня был /manifest.json вместо manifest.json в index.html.. Но, в любом случае, спасибо вам за потраченное время!!!
Ответ №2:
Вы пытаетесь развернуть как бэкэнд, так и интерфейс вместе с heroku?
В прошлом я использовал heroku для своего бэкенда и использовал netlify для развертывания своего интерфейса
Комментарии:
1. Эй! да, я пытаюсь развернуть оба из heroku. Но вы развернуты из разных служб в одном и том же проекте?
2. да, я просмотрел несколько учебных пособий, но я думаю, что это хорошая статья среднего уровня