не работает npm модуль "request" для Node.js v12.18.3



  • Привет
    Не работают POST и GET запросы на Node.js версии 12.18.3 с npm модулем "request". При POST и GET запросах получаю всегда один и тот же ответ: {} (двойные фигурные скобки) и что-то мне подсказывает, что это не ответ сервера. Раньше теже запроссы работали на Node.js v8.6.0.
    Список используемых модулей выглядит так (на v8.6.0 он выглядел так же):
    alt text

    Приведу часть Node.js кода:

    var request = require('request');
    var crypto = require('crypto');
    const qs = require('qs');
    .....
    const requestOptions = {.........}
    ......
    request(requestOptions, function(error, response, body) {....}

    Асинхронность в коде учтена.
    Совместим ли модуль request с Node.js v12.18.3? Кстати, при выборе npm модуля в настройках я не выбираю его из выпадающего списка, а просто вбиваю слово "request" и БАС подгружает этот модуль.
    Если проблема в несовместимости этого npm модуля vожет мне следует установить другой npm модуль для POST и GET запросов (из выпадающего списка), например "got" и перестроить приведенный выше код Node.js под него?

    Версия БАС 23.2.2
    ОС Windows 7 Pro



  • @botovod это модуль устарел и больше не будет развиваться. Используйте node-fetch или got. В got есть недостаток, сбивается порядок заголовков.



  • @UserTrue Как перестроить мой код Node.js на новый модуль?

    var request = require('node-fetch');
    var crypto = require('crypto');
    const qs = require('qs');
    .....
    const requestOptions = {.........}
    ......
    request(requestOptions, function(error, response, body) {....}

    Надо ли слово "request" менять в остальной части кода на "node-fetch"?



  • @botovod said in не работает npm модуль "request" для Node.js v12.18.3:

    @UserTrue Как перестроить мой код Node.js на новый модуль?

    var request = require('node-fetch');
    var crypto = require('crypto');
    const qs = require('qs');
    .....
    const requestOptions = {.........}
    ......
    request(requestOptions, function(error, response, body) {....}

    Надо ли слово "request" менять в остальной части кода на "node-fetch"?

    Только если модуль "node-fetch" имеет точно такие же методы, как и "request"



  • @botovod надо не слово менять, а читать документацию, у этих либ явно разное апи



  • Что-то ни "node-fetch" ни "got" не хотят работать в БАСе ни в версии Ноды 12.18.3 ни в версии 8.6.0.
    Коды для теста брал из интернета (прикрепляю ниже):

    var fetch = require('node-fetch');
    
    fetch('https://google.com')
            .then(res => res.text())
            .then(text => console.log(text))
    
    const got = require('got');
    
    (async () => {
    	try {
    		const response = await got('https://google.com');
    		console.log(response.body);
    		//=> '<!doctype html> ...'
    	} catch (error) {
    		console.log(error.response.body);
    		//=> 'Internal server error ...'
    	}
    })();
    

    alt text

    Скрипт с кодом:
    node-fetch.xml

    Что делаю не так?



  • @botovod said in не работает npm модуль "request" для Node.js v12.18.3:

    Что-то ни "node-fetch" ни "got" не хотят работать в БАСе ни в версии Ноды 12.18.3 ни в версии 8.6.0.
    Коды для теста брал из интернета (прикрепляю ниже):

    var fetch = require('node-fetch');
    
    fetch('https://google.com')
            .then(res => res.text())
            .then(text => console.log(text))
    
    const got = require('got');
    
    (async () => {
    	try {
    		const response = await got('https://google.com');
    		console.log(response.body);
    		//=> '<!doctype html> ...'
    	} catch (error) {
    		console.log(error.response.body);
    		//=> 'Internal server error ...'
    	}
    })();
    

    Скрипт с кодом:
    node-fetch.xml

    Что делаю не так?

    cинхронизация node.js

    await(new Promise((resolve, reject) => {
        var fetch = require('node-fetch');
    
        fetch('https://google.com')
            .then(res => res.text())
            .then(text => {
                console.log(text)
                resolve()
            })
    
    }));
    


  • Вобщем, с node-fetch разберусь позже, а пока решил потестировать переписанный скрипт на старом модуле request и заметил такую проблему: не работают POST и GET запросы на Node.js версии 8.6.0 с npm модулем "request" в версии БАС 23.2.2. Выдает ответ: {} (фигурные скобки).
    Пробовал пересоздать действие Node.js - не помогает.
    Когда открываю такой же скрипт на БАС 23.2.2 с тем же кодом Node.js созданный в версии БАС 21.9.2 - то POST и GET запросы работают исправно (скопировал код из одного скрипта в другой, чтобы убедится что он одинаковый).
    Можно тут что-то сделать, чтоб скрипт созданный в БАС 23.2.2 исправно работал в этой же версии?

    Еще заметил такую особенность, что нужно пересоздавать действие Node.js для разных версий Node.js.



  • @botovod said in не работает npm модуль "request" для Node.js v12.18.3:

    (async () => {

    Убери (async () => { }



  • @Fire_track said in не работает npm модуль "request" для Node.js v12.18.3:

    Убери (async () => { }

    Его там и нет. Раньше этот же код работал нормально, теперь не работает. Толи БАС перестал поддерживать модуль request в новой версии (хотя по моему это имеет отношение именно к Node), то ли скачиваемый модуль изменился.


Log in to reply
 

  • 29
  • 87
  • 5
  • 6
  • 2
  • 5
  • 8
  • 9