Развертывание стекового приложения MEAN в Heroku - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь развернуть приложение, которое я создаю со стеком MEAN, в Heroku, и у меня возникли некоторые проблемы.Я думаю, что проблема со структурой моего приложения.Я храню весь свой серверный код в папке с именем server, в которой есть свои собственные папки package.json и src, содержащие фактический код сервера.

Сейчас я просто пытаюсь заставить Heroku развернуть клиентскую часть приложения.Я только получаю сообщение об ошибке ... Я знаю, что база данных и сервер не работают, но я даже не могу пройти через первоначальное отображение приложения.У меня есть одно веб-dyno, настроенное на запуск ng serve (npm start) в приложении.

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

Вот код

Обратите внимание, что он находится на ветке deploy, и это специально.Я не хочу ничего подталкивать к мастеру, пока не буду уверен, что он работает.

1 Ответ

0 голосов
/ 30 мая 2018

Веб-сервер Angular ориентирован на localhost: по умолчанию 4200.Это можно изменить с помощью пары параметров командной строки.--port принимает порт, а --host принимает IP-адрес хоста.

Таким образом, вы можете изменить скрипт ng serve следующим образом: ng serve --host [host-ip] --port [port-number] --disableHostCheck.Этот последний флаг (--disableHostCheck) указывает серверу dev обойти проверку хоста, когда обычно ng serve не выполняется ни на чем, кроме localhost.Ужасная идея, если она предназначена для чего-либо, кроме частной разработки / тестирования.

Еще одна проблема: Heroku запускает веб-динамо, и, насколько я понимаю, они используют случайный порт и IP каждый раз.Хотя случайный порт хранится в переменной $ PORT, похоже, что IP не имеет аналогичной переменной.Веб-динамо хранят эту информацию при себе.

Heroku предлагает эту команду: heroku local web.Он запускает ваше приложение на localhost: 5000.Это означает, что ng serve --port 5000 отлично работает с этой командой.Это должно сказать вам, как ваш интерфейс будет работать на Heroku.Ваш угловой сервер разработки тоже будет работать как положено.

Для фактического развертывания в Heroku используйте этот свой экспресс-сервер.Запустите ng build из вашей файловой системы, и он выплюнет index.html в папке dist.Этот файл содержит все ваше интерфейсное приложение.Затем вы можете загрузить этот файл в браузер с сервера.

Для экспресса, который обычно разбивается на:

app.get('*', function(req, res) {
    res.sendFile('path/to/index.html');
});

Надеюсь, это поможет!Дайте мне знать, если я где-то пропустил отметку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...