Получение всех строковых переменных из Javascript файла

To get all the strings from a Javascript file, you’ll need to parse the file to get a syntax tree (AST), then walk it.

You can do this trivially with the ESPrima library (for parsing) and Estraverse (for walking the AST).

Читать далее «Получение всех строковых переменных из Javascript файла»

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»

Анализ логов с от RPC-сервиса на NodeJS

В одной из последних версий RPC-сервиса на NodeJS реализовано хранение логов в формате совместимом с CSV (разделителем выступает табуляция \t).

Читать далее «Анализ логов с от RPC-сервиса на 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";

Преобразование HTML таблицы в Excel на NodeJS

Для реализации данного процесса нам понадобится библиотека html-to-excel (исходный код этого приложения на странице https://github.com/pofider/html-to-xlsx).

Читать далее «Преобразование HTML таблицы в Excel на NodeJS»

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

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

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

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