为什么不调用https.request回调?(Why isn't the https.request callback called?)
我有一些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中调用
I have some node.js code where I'm trying to get package.info from raw.github.com. I'm doing a HTTPS request, but for some reason it looks like the callback is never called, because 'here' is never outputted.
Does anyone see what's going wrong?
console.log(options) req = https.request(options, function(res) { console.log('here') res.setEncoding('utf8') // ... more code here }) console.log(req) // .. return -> listening and waitingOutput
{ 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' } }For the full code see lib/packageinfo.js. The function is called in index.js
最满意答案
您需要在请求上调用end()来执行它,如下所示:
req = https.request(options, function(res) { console.log('here') res.setEncoding('utf8') // ... more code here }); req.end(); // <= HereYou need to call end() on the request to execute it, like this:
req = https.request(options, function(res) { console.log('here') res.setEncoding('utf8') // ... more code here }); req.end(); // <= Here更多推荐
发布评论