节点:是否有可能 http 服务器根据请求 return 来自请求模块的内容?

Node: Is it possible that http server on request return the content from a request module?

我想做的是当服务器收到请求时使用"request"模块发出请求,然后return将"request"的内容返回给客户端。可能吗?

const http = require("http");
const request = require("request");
const URL = "???";

const server = http.createServer();
server.on('request', (req, res) => {
  // called once for every HTTP request
  out_res = res;
  make_request((err, res, body) => {
    out_res.writeHead(200, {res});
    out_res.write(body);
    out_res.end();
  });
});

function make_request(callback) {
  request(URL, (err, res, body) => {
    callback(err, res, body);
  });
}

module.exports = () => {
  server.listen(8080);
  console.log('server start');
};

报错:ERR_STREAM_WRITE_AFTER_END,好久没有node.js,朋友问我一些代码,我就按上面的方式重写了。

当然可以

server.on('request', (req, res) => {
  request({uri: URL}).pipe(res);
});

只是 pipe API 对路由器响应对象调用的响应。

以下是我建议您编写服务器代码的方式

var server = http.createServer(function(req,res){
    if(req.url === '/' || req.url === '/index'){
        request({uri: URL}).pipe(res);
     }
    .... //other conditions

});
server.listen(3000,'127.0.0.1')

此外,您 can/should 考虑使用 express,定义路由等非常酷且易于使用