Это 2-я часть серии, в которой мы сами создаем классное приложение.
В первой части мы настроили наше приложение Slack, среду разработки и смогли запустить наш первый код node.js с нашего компьютера 🥳.
В этой части вы:
- Настройте контроль версий Git
- Откройте проект GitHub и синхронизируйте с ним свой проект.
- Настройте воркер на сервере Heroku
- Свяжите Heroku для синхронизации с учетной записью GitHub
Давайте рассмотрим и поймем код, который мы использовали:
- Линия № 2
const { WebClient, LogLevel } = require("@slack/web-api");
Эта строка вызывает пакет Node Slack SDK и назначает его параметру с именем WebClient. Это настройка, которую мы должны выполнить, чтобы использовать действия, связанные со Slack. Параметр LogLevel является избыточным, и мы его пока проигнорируем.
- Затем в строке № 5 мы создаем экземпляр с именем client, который будем использовать для выполнения действий, связанных со Slack (в нашем случае для публикации сообщения). Мы добавили наш токен в экземпляр, чтобы он имел право выполнять эти действия.
const client = new WebClient("YOUR-
Bot-User-OAuth-Token");
что в основном переводится как:
Создайте новый экземпляр константы с именем client. Это должен быть новый экземпляр WebClient, инициализированный токеном приложения, который позволяет ему выполнять действия.
- В строке № 7 мы создали экземпляр с именем channelId, в котором хранится идентификатор участника.
const channelId = "YOUR-MEMBER-ID";
Причина, по которой мы использовали экземпляр, заключается в том, что мы будем вводить channelId каждый раз, когда нам нужно будет его использовать, вместо того, чтобы явно указывать идентификатор. Параметризация всей информации в начале кода — очень хороший способ сохранить гибкий и читабельный код.
- Затем у нас есть блок, начинающийся со строки №8 и заканчивающийся строкой №21.
(async () => {
//SOME CODE TO SEND A MESSAGE TO SLACK
})();
Это формат для асинхронной функции. Это означает, что во время выполнения кода выполнение кода не будет останавливаться до тех пор, пока не завершится содержимое асинхронной функции (как и в случае неасинхронных функций, где выполнение кода приостанавливается до тех пор, пока функция не завершит свое выполнение). Зачем нам нужна асинхронная функция для выполнения отправки сообщения? Хороший вопрос! Это связано с кодом внутри функции:
try {
//SOME CODE TO SEND A MESSAGE TO SLACK
}
catch (error) {
//SOME CODE TO DEAL WITH WHAT HAPPENS WHEN THE MESSAGEE WILL NOT BE SUCCESSFULLY DELIVERED
}
У него есть блок try/catch, который представляет собой метод попытки и выполнения команды и возможность обрабатывать случай, когда команда терпит неудачу, не прерывая выполнение (если команда терпит неудачу, мы могли бы обработать его и продолжить выполнение остальной части нашего кода). Чтобы реализовать блок try/catch, он должен находиться внутри асинхронной функции.
- Давайте рассмотрим команду, которая фактически отправляет сообщение в Slack, в строках 11–13.
const result = await client.chat.postMessage({
channel: channelId,
text: "Hello world from my computer"
});
Это немного нелогично, но здесь написано что-то вроде:
Результат, который мне нужен, — это результат, когда я закончу ожидание завершения метода chat.postMessage экземпляра клиента. Метод chat.postMessage выполняется с использованием двух параметров конфигурации: channel, который равен нашему channelId (ранее определенному) и text, что соответствует сообщению, которое мы хотим отправить.
Этот блок выполняет chat.postMessage и помещает результат выполнения (ответ сервера Slack на наш вызов chat.PostMessage) в result.
- Затем в строке №16
console.log(result);
Мы отображаем ответ в нашем терминале. По сути говоря: установите запись журнала консоли в качестве содержимого результата.
Содержимое результата — это то, что мы видели здесь:
- Давайте рассмотрим пойманную часть блока
catch (error) {
console.error(error);
}
В основном это означает: если есть ошибка с блоком try, задайте содержание ошибки в параметре error, а затем установите log. strong> запись консоли должна быть содержимым ошибки.
Довольно просто, правда? 😅
Теперь давайте настроим контроль версий и разместим наш код в облаке.
Но почему 🤔?
Хороший вопрос! Во время разработки происходит много взаимодействий и иногда параллельное кодирование. Чтобы не потерять себя, мы должны отслеживать все наши изменения, управляя версиями изменений. Наличие нашего кода и версий в облаке позволит нам синхронизировать их с сервером для запуска нашего кода, а также позволит нам и другим членам команды вносить свой вклад в наш код из любого места.
Давайте откроем учетную запись GitHub для хранения нашего кода и его версий.
- Перейдите на https://github.com/
- Зарегистрироваться
- В VSCode щелкните версию. значок управления на левой панели инструментов и нажмите Опубликовать на GitHub.
- Нажмите на кнопку с галочкой, чтобы сделать первый коммит
- Добавьте примечание к коммиту и нажмите клавишу return.
- О нет, у нас была ошибка, давайте посмотрим, в чем проблема
- Давайте настроим адрес электронной почты и имя пользователя для коммитов git.
- Откройте терминал и введите следующую информацию (замените поля электронной почты и имени данными, которые вы использовали для настройки учетной записи GitHub)
git config --global user.email "[email protected]"
а затем нажмите клавишу возврата.
Затем добавьте имя пользователя и нажмите клавишу возврата
git config --global user.name "Your Name"
- Давайте попробуем зафиксировать снова, используя значок галочки и добавив примечание
обратите внимание, что список слева стал пустым — это означает, что всем нашим последним изменениям присвоена версия проекта.
- Вы заметите на GitHub, что теперь у вас есть новый репозиторий. Нажмите на нее.
- Скопируйте ссылку на репозиторий
- Теперь давайте отправьте нашу последнюю версию на GitHub.
- Мы получим сообщение об ошибке в правом нижнем углу окна VSCode. Давайте нажмем «Добавить удаленный», чтобы решить эту проблему.
- Вставьте URL-адрес, скопированный с GitHub.
- Добавьте имя удаленному источнику и нажмите клавишу «Return».
- Давайте попробуем еще раз отправить наш код
- Теперь, когда вы обновите свой проект GitHub, вы увидите наши локальные файлы в проекте.
Давайте посмотрим, что только что произошло
Мы подключили систему контроля версий (git), а затем отправили нашу последнюю версию в нашу главную ветку на GitHub.
Так что же это за действия Commit и Push?
Мы использовали Commit, чтобы зафиксировать файлы для управления версиями, и Push, чтобы отправить последнюю версию в удаленный репозиторий на GitHub.
Во время разработки мы будем сохранять и фиксировать наши изменения, а затем отправлять их на GitHub для каждой новой версии кода, которую мы создадим.
Хорошо, теперь мы настроим удаленный сервер (Heroku) для запуска нашего приложения.
(9 шагов)
- Перейдите в Heroku и создайте новую учетную запись со всеми настройками по умолчанию. Обязательно установите язык программирования по умолчанию как Node.js
2. Создайте новое приложение в Heroku (дайте ему веселое и узнаваемое имя)
3. Подключите свой проект GitHub к приложению.
4. В VSCode укажем, что start — это команда, которая должна выполнить файл app.js, содержащий наше приложение. Это просто то, что нужно сделать, чтобы все работало, как ожидалось.
4.1 Перейдите в проводник, щелкните файл package.json
4.2 Замените строку «тест» под скриптами на следующую:
"start": "node app.js"
4.3 Сохраните измененный файл package.json
4.4 Создайте новый файл в папке проекта и назовите его Procfile (без расширения). Добавьте следующую строку в файл и сохраните ее (это то, что нужно настроить, чтобы все работало должным образом на Heroku).
worker: npm start
4.5 На веб-сайте Heroku измените следующую конфигурацию на «worker» вместо «web».
5. Теперь давайте изменим сообщение, которое мы хотим отправить с помощью нашего приложения (не забудьте сохранить файл), зафиксируем изменения, отправим их на GitHub и посмотрим, что произойдет. Отправленные изменения должны поместить наш код на сервер Heroku и запустить его оттуда — в конечном итоге отправив наше сообщение в наш Slack с сервера Heroku.
***ЭТО ТО, ЧТО ВЫ БУДЕТЕ ДЕЛАТЬ ПРИ КАЖДОМ ИЗМЕНЕНИИ КОДА ПОСЛЕ СОХРАНЕНИЯ ФАЙЛОВ***
6. На Heroku вы можете вручную развернуть изменение на сервере.
7. Если все прошло хорошо, вы должны увидеть это сообщение в Heroku и получить новое слабое сообщение.
8. Настройте Heroku для автоматического развертывания любых изменений, происходящих в репозитории GitHub. Таким образом, каждое нажатие на GitHub будет автоматически развертываться на Heroku и выполняться.
9. Давайте еще раз проверим наш end-to-end, снова изменив сообщение, зафиксировав и отправив изменение.
Ты сделал это! 🍾
Вы успешно настроили сервер, на котором работает ваше приложение. Кроме того, ваша локальная разработка синхронизируется с удаленным репозиторием. Таким образом, все ваши зафиксированные и отправленные изменения автоматически выполняются на сервере.
Это довольно много — Молодец!
Что теперь?
Нашими следующими шагами будут:
- Установите пакет cron npm
- Используя инструмент создания сообщений Slack, настройте формат сообщения для отправки через API.
- Настройте учетную запись AWS и создайте новую корзину для хранения изображений.