Для начала вот базовая файловая структура, которую я использовал

├── package.json

├── readME.md

└── сервер

├── контроллеры

│ └── поиск

│ ├── search.game.controller.js

│ ├── search.genre.controller.js

│ └── search.platform.controller.js

├── помощники

│ └── поиск

│ ├── search.game.helper.js

│ ├── search.genre.helper.js

│ └── search.platform.helper.js

├── index.js

├── промежуточное ПО

│ └── application.js

├── модели

│ └── поиск

│ ├── search.game.model.js

│ ├── search.genre.model.js

│ └── search.platform.model.js

├── роутеры

│ ├── api

│ │ └── search.router.js

│ └── database.router.js

└── server.js

Обратите внимание, что в этом примере server.js и index.js находятся в папке server.

В этом примере я объясню, как создать и развернуть сервер узла с помощью ES7: сначала предположим, что ваш файл server.js содержит код, который фактически запускает сервер. Что-то типа:

app.listen(app.get('port'), () => {
console.log('we are listening on ', app.get('port')
}

В server / server.js: настройка портов:

app.set(‘port’, process.env.PORT || 3000);

убедитесь, что вы разрешаете серверу использовать process.env.PORT ИЛИ ‹другой порт›. Если вы развернете, у вас не будет того же порта, что и у вашего локального порта.

зависимости:

babel-register (это позволяет нам использовать новые типы модулей, такие как «Импорт» и «экспорт по умолчанию»)

babel-polyfil l (это позволяет нам использовать встроенные модули, такие как weak-map, Promise)

babel-preset-es-2015 (это сообщит babel, что мы хотим транспилировать в ES6)

babel-preset-stage-0 (это Strawman, он же позволяет вам использовать будущий JavaScript, это позволяет нам использовать ES7).

Обычно, когда мы запускаем серверы узлов, в нашем package.json есть что-то вроде этого:

“start” : node server/server.js

Однако, если нам нужно динамически транспилировать и использовать функции ES7, мы должны создать новый файл с именем index.js, который будет точкой входа для нашего приложения. Затем для этого файла потребуются другие необходимые файлы. Глянь сюда:

Index.js

const path = require(‘path’);
require('babel-register');
require('babel-polyfill;);
require(path.join(__dirname, ‘/server.js’))

Я предпочитаю указывать абсолютные пути с помощью path.join вместо того, чтобы записывать путь в виде строкового литерала. Это позволит мне гарантировать, что при развертывании я смогу получить файл server.js.

Вернуться к server / server.js:
Сделать убедитесь, что вы обрабатываете маршрут GET ('/'). Это маршрут посадки, когда вы впервые попадаете на веб-сайт, и его нужно обработать. Вы можете сделать это просто:

в server / server.js:

app.get(‘/’, (req, res) => {
res.sendFile(path.join(__dirname, ‘../’, ‘index.html’));
});

Здесь я просто обработал файл index.html, когда запросом является GET к «/».

Создайте файл с именем .babelrc. Когда babel запускается, он будет искать свой .rc-файл и использовать его, чтобы узнать, какие пресеты использовать.

В .babelrc:

{
presets: [“es2015”, “stage-0”]
}

Просто поместите свои пресеты в массив с ключом «presets».

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

npm install –save dotenv

Затем создайте файл с именем .env
Примечание: обычно вы не можете щелкнуть правой кнопкой мыши и создать этот файл, попробуйте использовать `touch .env` в вашем терминале, чтобы создать его.

Внутри .env вы можете настроить свои ключи API и тому подобное.

.env:

ultimate_password = ‘MYPASSORD’
username = ‘MYUSERNAME’

Затем, когда вы захотите его использовать, просто выполните

require (‘dotenv’). config ();

Вы можете сделать это в любом файле .js

Например:

require(‘dotenv’).config();
console.log(process.env.ultimate_password) // MYPASSWORD

Теперь вам нужно настроить свой герой.
перейдите в heroku, найдите вкладку настроек и нажмите «Показать конфигурационные переменные».

Затем введите переменные конфигурации. Это должны быть те же ключевые значения, которые вы использовали в вашем файле .env.

Помните:
ключ: ultimate_password
значение: MYPASSWORD
Ключи слева, значения справа. Не вставляйте термин «ключ», просто вставьте элемент ech в правильное поле.
Если вы хотите установить зависимости разработчика в ветке heroku, включите

NPM_CONFIG_PRODUCTION                                       false

Убедитесь, что в вашем package.json указан «main».
EX:

“main”: index.js

Укажите точку отправления:

“start”: node server/index.js

введите следующие команды heroku. (Сначала убедитесь, что у вас установлен heroku глобально).

героку логин

героку создать

git push heroku ‹yourbranch›: мастер

Затем, если вы столкнетесь с ошибкой, введите «Журналы Heroku»