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