【问题标题】:Not getting any response in the browser在浏览器中没有得到任何响应
【发布时间】:2015-11-25 03:00:29
【问题描述】:

这是我的客户端代码。

var express = require('express');
var url=require('url');
var app =express();
var fs=require('fs');

app.use(function(req,res,next){
    console.log(req.url,req.method);

    next();
});
app.get('/user/data',function(request,response)
{
    response.send("User1,User2");
    response.end();
});

var server=app.listen(7000);
console.log("started");

这是我向上述服务器发出请求的客户端代码。问题是上述服务器给出的响应(即“User1,User2”)显示在控制台中,但未显示在浏览器中。

var express=require('express');
var http=require('http');
var app=express();

var body="";
app.get('/data',function(req,res){
    var options=
    {
        'host':'localhost',
        'path':'/user/data',
        'port':'7000'
    }
    var call=function(response)
    {
        response.on('data',function(chunk)
        {
            body+=chunk;
        });
        response.on('end',function()
        {
            console.log(body);
            res.write(body);
        });

    }
    http.request(options,call).end();
});

app.listen(9000);
console.log("started");

【问题讨论】:

  • 是否需要将res 变量作为参数传递给call 函数?

标签: node.js express


【解决方案1】:

替换

res.write(body);

res.send(body);

或者

res.write(body);
res.end();

这不是该页面的唯一问题),但这会让你开始。

【讨论】:

  • res.write 将数据写入输出缓冲区,当缓冲区填满时,其内容被发送到浏览器并清空,或者您需要命令它将该数据发送到浏览器。
  • 谢谢!!解决了我的问题,但页面中的另一个问题是什么?
  • 尝试重新加载页面,您的 body 变量正在被附加。还是预计会这样?
  • 将 'var body=""' 移动到 'var call' 函数内,所以它只存在于函数范围内。
【解决方案2】:

你能用request这个吗?

如果您的“客户端”代码中不需要console.log,您可以:

app.get('/data', function (req, res) {
  var options = {
    'host':'localhost',
    'path':'/user/data',
    'port':'7000'
  }

  request(options).pipe(res);
});

【讨论】:

  • 你的意思是http.request(options).pipe(res) ??我也无法理解为什么res.write(body) 没有写入浏览器。
猜你喜欢
  • 2021-03-10
  • 2016-04-05
  • 1970-01-01
  • 2018-06-18
  • 2019-09-02
  • 2018-01-21
  • 2013-05-13
  • 2020-06-12
  • 1970-01-01
相关资源
最近更新 更多