Развертывание приложения стека MEAN в Heroku без загрузки каких-либо файлов? - PullRequest
1 голос
/ 19 апреля 2019

Я выполняю настройку своего веб-приложения для развертывания на Heroku. Сборки завершаются успешно, но файлы не загружаются, и я получаю пустую страницу и сообщение об ошибке GET / error.

Я испробовал оба руководства / решения ниже, но не нашел удачи ни с одним из них. https://medium.com/@BaaniLeen/deploying-mean-stack-app-to-heroku-tips-and-tricks-5bd43a967f8c

https://devcenter.heroku.com/articles/mean-apps-restful-api

Я попытался изменить свой PROCFILE, мой Server.js и мой файл /bin/www.js, чтобы попытаться заставить heroku реально загружать угловую сторону вещей, но безрезультатно.

https://www.github.com/jaredana/crud есть ссылка на репозиторий, которая актуальна для моих локальных файлов, поэтому структура файлов почти такая же, за исключением моих .gitignores

Вот изображение моей последней "логи героки - хвост" https://imgur.com/btdp0sE

Я также включил строки в мой файл app.js (где объявлен express ()):

var distDir = __dirname + "/dist/";
app.use(express.static(distDir));

потому что я знаю, что при запуске ng build ваше угловое приложение собирается в каталог / dist /.

Все это работает на моей локальной машине. Я запускаю npm start на угловой стороне, которая обычно запускает ng serve --proxy-config proxy.config.json, и я запускаю npm start на стороне узла вещей для вызова node ./bin/www. У меня для них установлен node ./node/server.js для углового сценария «start» и node ./node/bin/www для «start» сценария на стороне узла, а также мой procfile, содержащий web: npm start

Мне явно нужно изменить то, что запускает heroku, когда приложение разворачивается, чтобы инициализировалась не только сторона узла. Но я с трудом уточняю, что нужно загрузить heroku, а что нет

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

1 Ответ

0 голосов
/ 26 апреля 2019

Я не уверен, какие файлы вы на самом деле используете, потому что ваш репо отличается от того, что вы написали здесь.

Вам не нужен Procfile, если вы напишите «npm start», npm start будет использоваться heroku, если у вас нет Procfile. Поэтому напишите правильную команду запуска в Procfile, например:

web: node ./node/server.js"

Затем вы можете использовать «npm start» для вашей машины разработки.

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

node ./node/server.js"

Вам нужен путь, подобный "../dist/", потому что вы запустили экспресс-сервер в папке узла и, соответственно, вам нужно выйти из него, потому что папка dist будет на том же уровне в качестве папки-узла.

var distDir = "../dist/";
app.use(express.static(distDir));

Еще одной проблемой может быть сценарий postinstall. Этот скрипт будет запускаться после установки npm на heroku, но до запуска npm build. Замените postinstall на heroku-postbuild. Это заменит «сборку npm» на героку.

"postinstall": "ng build --output-path dist --prod" // replace that line with the next
"heroku-postbuild": "ng build --output-path dist --prod"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...