Сегодня у меня был ужасный день, когда я пытался развернуть свое приложение Vue.js на Heroku. Попробовав несколько «известных» методов, которые были в статьях и документах, я, наконец, смог развернуть его! (Хотя с моей стороны есть некоторые настройки 😏). Итак, давайте посмотрим, как я это сделал.

Psst: я предполагаю, что у вас уже есть приложение VueJS и создано приложение Heroku либо через интерфейс командной строки, либо через панель инструментов heroku. Не знаете, как это сделать? Ознакомьтесь с этими ресурсами





Также стоит отметить, что мой исходный код развертывался на Heroku через Github.

С учетом всего сказанного и снятого с моей груди, давайте приступим к развертыванию, ладно? 😀

Начиная

Установите в свой проект следующие зависимости:

  • Экспресс (старый добрый экспресс)
  • Serve-Static (Подробнее о зависимости здесь)

Этого можно добиться, запустив:

npm install express serve-static --save

Примечание. В моем случае я обнаружил, что установка Express и serve-static в качестве зависимостей вместо зависимостей разработки работает.

Server.js

Создайте файл server.js в корне вашего проекта и добавьте к нему следующее:

const express = require('express');
const serveStatic = require("serve-static");
const path = require('path');
const app = express();
app.use(serveStatic(path.join(__dirname, 'dist')));
const port = process.env.PORT || 80;
app.listen(port);

Итак, приведенный выше код создает сервер NodeJS через Express и обслуживает содержимое в папке dist (которая является вашей производственной сборкой после запуска npm run build). Поэтому, когда кто-то посещает ваше приложение Heroku, будет показан dist / index.html!

Примечание. Бит process.env.PORT очень важен, потому что он понадобится Heroku при назначении порта для вашего приложения, так что не следует жестко его кодировать? 😉

Package.json

В package.json добавьте следующее в раздел скрипты:

"postinstall": "if test \"$NODE_ENV\" = \"production\" ; then npm run build ; fi ",
"start": "node server.js",

Обе строки кода, приведенные выше, называются сценариями NPM, и вкратце суть такова:

  • postinstall запускается после того, как NPM установит зависимости проекта.
  • start будет использоваться для запуска сервера, который мы создали некоторое время назад с помощью Express.

Итак, вместе сценарии NPM сообщают Heroku: «Привет, чувак, не мог бы ты создать мое приложение Vue, когда NODE_ENV настроен на производство, а затем будь хорошим парнем и запусти мой экспресс-сервер, чтобы мое приложение стало живым для всего мира! ” 😆

Примечание. Heroku получит значение NODE_ENV из переменных конфигурации, которые вы зададите на панели инструментов своего приложения в разделе настройки ›config vars. Просто добавьте NODE_ENV в качестве ключа и Производство в качестве значения.

Заключение

После того, как все это будет сделано, нажмите на Github и разверните приложение Heroku (вручную или автоматически - кто угодно.

Вы должны увидеть свое приложение при посещении URL-адреса приложения Heroku.

Вот как я это сделал, и я надеюсь, что это поможет и вам, когда в этом возникнет необходимость.

Удачного развертывания!