Node.js: невозможно вызвать функцию канала

Я пробую простую программу, чтобы вызвать вызов бэкэнда и получить ответ, вот мой код node.js:

'use strict';

var util = require('util');
var http = require('http');
var request = require('request');
var stream = require('stream');


module.exports = {
 summary:summary
}

function summary(request, response) {
 var id = request.swagger.params.id.value;
 var url = "http://localhost:8080/test-org/myApp/summaries?q='id'";
 console.log('Executing request: '+url);
 request.get(url).pipe(response);
 };

Однако я получаю следующую ошибку:

curl http://localhost:10010/v1/customers/1123/summary
Executing request: http://localhost:8080/test-org/myApp/summaries?q='
id'
TypeError: Cannot call method 'pipe' of undefined
    at summary (C:\Apigee127\API-116\api\controllers\summary.js:17:19)
    at swaggerRouter (C:\Apigee127\API-116\node_modules\a127-magic\node_modules\
swagger-tools\middleware\2.0\swagger-router.js:114:18)
    at C:\Apigee127\API-116\node_modules\a127-magic\lib\middleware.js:82:9
    ....

Есть какой-то пакет npm, который мне не хватает, который мне нужно скачать?

-S

2 ответа

Решение

Вы нарушаете обзор. Ваша функция занимает request но вы также загрузили var request = require('request'),

Измените это так, что у вас есть:

   var request = require('request');

   function summary(req, res) {
      request.get(url).pipe(res);
   }

TypeError: Cannot call method 'pipe' of undefined Значит это request.get(url) возвращается undefined, И да, вы не можете вызвать любую функцию на undefined объект.

Итак, почему request.get результаты не определены?

Можете ли вы изменить код для включения отладки?

  request.get(url)
  .on('error', function(err) {
    console.log(err)
  })
  .pipe(response);

Есть какой-то пакет npm, который мне не хватает, который мне нужно скачать?

https://www.npmjs.org/package/request перечисляет 16 зависимостей, но они должны были загружаться автоматически.

Другие вопросы по тегам