Для начала вот базовая файловая структура, которую я использовал
├── 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»