在 Node.js 服务器内发出异步请求错误:“类型错误:对象 #<对象> 没有方法'_implicitHeader'”

Making asynchronous requests within a Node.js server error:"TypeError: Object #<Object> has no method '_implicitHeader'"

本文关键字:错误 对象 implicitHeader 有方法 类型 服务器 js Node 请求 异步 类型错误      更新时间:2023-09-26

所以我试图做的基本上是创建一个服务器,它将接收请求,发出新请求,接收新响应,然后将其中继到原始源。

这是我的代码:

var http = require('http');
var request = require('request');
var server = http.createServer(function(request, response){
response.writeHead(200, {"Content-Type": "text/plain"});
response.write('on');
getSummonerId(response);
});
server.listen(9000);
console.log("Server running!");
function getSummonerId(cb){
    request('https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + 'someones-name' + '?api_key=mykeygoeshere', function(request, response, body){
        cb(JSON.parse(body));
    });
}

当我这样做时,我得到了TypeError: Object #<Object> has no method '_implicitHeader'.

在进一步搜索googel的大部头时,我发现了这些:

https://github.com/joyent/node/issues/5597

如何正确实现 nodejs Stream API?

我认为这可能是我遇到的问题,但我无法将原始问题的上下文转换为我的问题上下文。

嗯,我认为这里有多个问题,但最大的问题是您将response对象作为回调传递到getSummonerId()函数中,但它不是函数,它是一个对象。尝试这样的事情怎么样:

var http = require('http');
var request = require('request');
var server = http.createServer(function(request, response){
    response.writeHead(200, {"Content-Type": "text/plain"});
    // response.write('on');  // why do you have this?
    getSummonerId(function(data) {  // notice that we pass in a function, but keep response handling up here
        response.end(JSON.stringify(data));  // HTTP responses must be strings
    });
});
server.listen(9000);
console.log("Server running!");
function getSummonerId(cb){
    request('https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + 'someones-name' + '?api_key=mykeygoeshere', function(request, response, body){
        cb(JSON.parse(body));
    });
}