2014-12-02 2 views
0

Я пытаюсь простой программой для вызова вызова бекенда & получить ответ обратно, вот мой 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

ответ

3

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

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

var request = require('request'); 

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

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); 

Is there some npm package I am missing that I need to download?

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

+0

@ Iwang135, если мы говорим о https://github.com/request/request то нет, он принимает только один arguement - * URL * – alandarev

+0

К сожалению, Я добавил обновление. Я что-то смутил. Для записи это _does_ принимает несколько аргументов, но не обязательно при использовании '.pipe' – lwang135