RabbitMQ & NodeJS

Инструкция по установке RabbitMQ тут, но для удобства можно запустить docker:

# latest RabbitMQ 3.12
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management

# -it можно заменить на -d

Примечание: доступ к веб-интерфейсу логин guest пароль guest

Читать далее «RabbitMQ & NodeJS»

Особенности работы iisnode

В логах windows можно увидеть следующую ошибку:

Faulting application name: w3wp.exe, version: 10.0.14393.0, time stamp: 0x57899b8a
Faulting module name: ntdll.dll, version: 10.0.14393.2969, time stamp: 0x5ccd148a
Exception code: 0xc0000005
Fault offset: 0x0000000000065553
Faulting process id: 0x2694
Faulting application start time: 0x01d88ba20ec97214
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: f0c1f728-42d5-446e-b599-6bc97223eb12
Faulting package full name: 
Faulting package-relative application ID: 

Проблема заключалась в том, что в один момент времени процесс node.exe потребляет оперативной памяти больше 2Gb.

Читать далее «Особенности работы iisnode»

Перенаправление логов в systemd

Создаем сервис:

[Unit]
Description=RPC сервис
After=network-online.target

[Service]
User=www-data
Restart=on-failure
# тут указываем путь к серверному приложению
WorkingDirectory=/var/www/rpc-release
ExecStart=/usr/bin/node /var/www/rpc-release/bin/www conf=./release.conf
StandardOutput=file:/var/log/rpc/rpc-dev.log
StandardError=file:/var/log/rpc/rpc-dev-error.log

[Install]
WantedBy=multi-user.target
Читать далее «Перенаправление логов в systemd»

Настройка приема платежей через PayPal

Внимание: Платежная система PayPal с 31 июля 2021 г. прекратил осуществления клиентских внутренних переводов и платежей по России. Об этом говорится в заявлении компании. При этом пользователи системы в России по-прежнему смогут осуществлять перевод за рубеж или получать перевод из-за границы.

Прием платежей реализован через NodeJS и библиотеки express. Создаем проект и добавляем в зависимость npm модуль @paypal/checkout-server-sdk.

npm i @paypal/checkout-server-sdk

Прием платежей через PayPal реализуется в два этапа:

  1. создание (формирование) платежа клиентом.
  2. подтверждение приема платежа.
Читать далее «Настройка приема платежей через PayPal»

Обновление NodeJS

Иногда может быть ситуация, когда требуется использовать более новые версии NodeJS.

Инструкция по обновлению следующая:

  • Скачиваем инсталяк
curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
# тут setup_16.x номер версии node
  • Запускаем скрипт
sudo bash nodesource_setup.sh
  • Устанавливаем nodejs
sudo apt install nodejs

Оригинал статьи: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-ru

Ошибка unable to verify the first certificate в NodeJS

Если в приложении express используется nodemailer и используется порт 25 без шифрования, то выходит вот такая ошибка.

Чтобы исправить это, нужно в файле /bin/www добавить

// добавлено специально, чтобы была рассылка писем с 25 порта
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Работа с часовыми поясами

Все сервера должны быть в одном часовом поясе и настроить их можно по инструкциям ниже:

Далее в nodejs нужно добавить код для преобразования даты:

var moment = require('moment');
...
Date.prototype.toJSON = function () { return moment(this).format('YYYY-MM-DDTHH:mm:ss.SSSZZ'); }