Node.js - listener must be functional error

I am trying to convert the accepted answer ( How do I create a simple HTTP proxy in node.js? ) From http to https.

When I try to access the proxy from my browser, the server crashes and throws this error:

events.js:171
    throw TypeError('listener must be a function');
      ^
TypeError: listener must be a function

      

Here is my code:

var https = require('https');
var fs = require('fs');

var ssl = {
    ca: fs.readFileSync("cacert.pem"),
    key: fs.readFileSync("key.pem"),
    cert: fs.readFileSync("cert.pem")
};

https.createServer(ssl, onRequest).listen(3000, '127.0.0.1');

function onRequest(client_req, client_res) {

  console.log('serve: ' + client_req.url);

  var options = {
    hostname: 'www.example.com',
    port: 80,
    path: client_req.url,
    method: 'GET'
  };

  var ssl = {
    ca: fs.readFileSync("cacert.pem"),
    key: fs.readFileSync("key.pem"),
    cert: fs.readFileSync("cert.pem")
  };

  var proxy = https.request(ssl, options, function(res) {
    res.pipe(client_res, {
      end: true
    });
  });

  client_req.pipe(proxy, {
    end: true
  });
}

      

As you can see, I made very few changes and I'm not sure how to fix this.

Any ideas?

+3


source to share


2 answers


It looks like you have https.request

wrong arguments ( http://nodejs.org/api/https.html#https_https_request_options_callback ). There should only be:

var proxy = https.request(options, function(res) {
   res.pipe(client_res, {
     end: true
   });
 });

      



Your certificate information should be included in the options object from the linked page:

var options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET',
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
options.agent = new https.Agent(options);

var req = https.request(options, function(res) {
  ...
}

      

+3


source


I solved this error by passing the function name as param rather than the variable containing the function



+1


source







All Articles