我有一些node.js代码,我正在尝试从raw.github.com获取package.info。我正在做一个HTTPS请求,但由于某种原因,它似乎永远不会被调用回调,因为'here'永远不会被输出。
有谁看到出了什么问题?
console.log(options)
req = https.request(options, function(res) {
console.log('here')
res.setEncoding('utf8')
// ... more code here
})
console.log(req)
// .. return -> listening and waiting
输出
{ host: 'raw.github.com',
port: 443,
path: '/jasny/bootstrap/2.2.2-j3-wip/package.json',
method: 'GET' }
{ domain: null,
_events:
{ response: { [Function: g] listener: [Function] },
socket: { [Function: g] listener: [Function] } },
_maxListeners: 10,
output: [],
outputEncodings: [],
writable: true,
_last: false,
chunkedEncoding: false,
shouldKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_hasBody: true,
_trailer: '',
finished: false,
agent:
{ domain: null,
_events: { free: [Function] },
_maxListeners: 10,
options: {},
requests: {},
sockets: { 'raw.github.com:443': [Object] },
maxSockets: 5,
createConnection: [Function: createConnection] },
socketPath: undefined,
method: 'GET',
path: '/jasny/bootstrap/2.2.2-j3-wip/package.json',
_headers: { host: 'raw.github.com' },
_headerNames: { host: 'Host' }
}
有关完整代码,请参阅lib/packageinfo.js。该函数在index.js
中调用答案 0 :(得分:5)
您需要在请求上调用end()
来执行它,如下所示:
req = https.request(options, function(res) {
console.log('here')
res.setEncoding('utf8')
// ... more code here
});
req.end(); // <= Here