• Как дождаться выполнения сurl?

    @XenonDev
    попробуйте перевести на промисы
    const { exec } = require('child_process');
    
    const cmd = `curl -X POST https://secure.payu.com/api/v2_1/orders -H "Content-Type: application/json" -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" -d '{ "notifyUrl": "https://your.eshop.com/notify", "customerIp": "127.0.0.1", "merchantPosId": "145227", "description": "RTV market", "currencyCode": "PLN", "totalAmount": "21000", "buyer": {     "email": "john.doe@example.com",     "phone": "654111654",     "firstName": "John",     "lastName": "Doe",     "language": "pl" }, "products": [     {         "name": "Wireless Mouse for Laptop",         "unitPrice": "15000",         "quantity": "1"     },     {         "name": "HDMI cable",         "unitPrice": "6000",         "quantity": "1"     } ]}'`;
    
    execCommand(cmd)
      .then(({ stdout, stderr }) => console.log(`stdout: ${stdout}\nstderr: ${stderr}`))
      .catch(err => console.error(err)
      .finally(() => console.log('App has been finished'))
    
    function execCommand(cmd) {
        return new Promise(resolve, reject) {
          exec(cmd, (error, stdout, stderr) => error? reject(error) : resolve({ stdout, stderr }));
      };
    }

    И честно говоря не знаю как узнать успешно выполнился curl или нет, так как stderr будет приходить всегда. Возможно можно смотреть на код возврата процесса...
    А вообще Вам правильно написали, надо использовать что-то из либ (requset, axios, fetch...) для отправки запросов. Не хотите внешнюю либу - можно использовать нативную библиотеку http.
    Ответ написан
    Комментировать
  • Подключение Web сервера по Wifi, как правильно настроить роутер?

    @XenonDev
    У меня подобная ситуация, сделан сервак на node.js. Компы подключены к роутеру по кабелю, но в данном случае это не суть важно. У меня сделано так:
    1. Есть роутер который раздет инет 4-м компам
    2. На одном из этих 4-х компьютеров крутится сервак на node.js.
    3. Сам сервер слушает конкретный порт(ы), для примера возьмем 1234
    4. Идем в настройки роутера, дальше в раздел перенаправления портов и настраиваем правило что все запросы по TCP (либо по обоим протоколам TCP + UDP, зависит от специфики Вашего сервера) приходящие на порт XXXX роутера будут автоматически перенапрявляться на порт 1234 локального сервера с node, где XXXX это произвольный порт который надо будет указывать для доступа к Вашему серверу.
    5. Открываем в инете сайт MyIP и смотрим Ваш реальный IP адрес, который присваивается Вашему роутеру для идентификации в интернете (пусть к примеру это будет 176.25.25.10)
    6. Дальше клиент (неважно это другой комп. в Вашей локальной сети либо удаленный за 1000 км от Вас компьютер) делает обращение (запрос) к Вашему серверу по адресу: 176.25.25.10:XXXX

    Если портов, которые слушает сервер несколько, то надо указать в правилах роутера несколько правил, по одному на каждый порт либо одно правило, но указав диапазон портов.
    Если, например, в правиле в качестве XXXX указать порт 80, то клиент открыв браузер может обратиться к Вашему серверу просто набрав ip адрес 176.25.25.10 даже не указывая порт.

    Надеюсь это поможет в решении Вашей проблемы.
    Данная схема проверена и сервер уже не один месяц крутится таким образом.
    Ответ написан
    Комментировать