2017-02-07 5 views
-1

Я хотел проверить код в Node.js документального, но у меня есть эта проблема:Ошибка в «чистом» модуле

net.js: 951 бросить новый TypeError ("вариант„порт“должен быть число или строка: '+ ^

TypeError: опция "порт" должен быть числом или строкой: нулевой

Мой код:

const http = require('http'); 
const net = require('net'); 
const url = require('url'); 

// Create an HTTP tunneling proxy 
var proxy = http.createServer((req, res) => { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('okay'); 
}); 
proxy.on('connect', (req, cltSocket, head) => { 
    // connect to an origin server 
    var srvUrl = url.parse("http://${req.url}"); 
    var srvSocket = net.connect(srvUrl.port, srvUrl.hostname,() => { 
    cltSocket.write('HTTP/1.1 200 Connection Established\r\n' + 
        'Proxy-agent: Node.js-Proxy\r\n' + 
        '\r\n'); 
    srvSocket.write(head); 
    srvSocket.pipe(cltSocket); 
    cltSocket.pipe(srvSocket); 
    }); 
}); 

// now that proxy is running 
proxy.listen(1337, '127.0.0.1',() => { 

    // make a request to a tunneling proxy 
    var options = { 
     port: '1337', 
    hostname: '127.0.0.1', 
    method: 'CONNECT', 
    path: 'www.google.com' 
    }; 

    var req = http.request(options); 
    req.end(); 

    req.on('connect', (res, socket, head) => { 
    console.log('got connected!'); 
    }); 
}); 

ответ

0

Там нет порта онемели er в пути/URL запроса, это просто «www.google.com». По умолчанию вам понадобится порт (например, 80), если в пути/URL-адресе нет порта.

Кроме того, вы используете неправильный набор котировок для значения, переданного в url.parse(). Вам нужна кавычка вместо обычных кавычек:

var srvUrl = url.parse(`http://${req.url}`); 
+0

Той же проблема:/---> http://imgur.com/a/XwuOb – FalqueDEV

+0

Я обновил свой ответ. – mscdex

Смежные вопросы