3

我一直试图让我的服务器正常工作,但是当我发送发布数据时,它只是一直在加载并且没有给出任何结果。这是我的 noen.js 文件。

var http = require('http');
var url = require('url');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {
  var queryData = url.parse(request.url, true).query;
  response.writeHead(200, {"Content-Type": "text/plain"});

  if (queryData.name) {
    // user told us their name in the GET request, ex: http://host:8000/?name=Tom
    var exec = require('child_process').exec;
    function puts(error, stdout, stderr) {sys.puts(stdout)}
    exec ("casperjs test.js " + queryData.name + '\n');

  } else {
response.end("Contact Admin - Not Working\n");
  }
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(1213);

谁能帮我解决这个问题?当我去

127.0.0.1:8000/?name=tom 

我没有得到响应页面只是进入一个长的加载循环

4

2 回答 2

5

如果为真,则没有 response.end,因此响应“永不”结束。写在 if 的底部

response.end("something");

你会得到回应;

要获取响应的过程输出:

https://stackoverflow.com/a/3944751/3018595

var http = require('http');
var url = require('url');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {
  var queryData = url.parse(request.url, true).query;
  response.writeHead(200, {"Content-Type": "text/plain"});

  if (queryData.name) {
    // user told us their name in the GET request, ex: http://host:8000/?name=Tom
    var exec = require('child_process').exec;

    exec ("casperjs test.js " + queryData.name + '\n',function(err, stdout, stderr) {

        response.end(stdout);

    });

  } else {
    response.end("Contact Admin - Not Working\n");
  }
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(1213);
于 2014-02-16T00:48:13.680 回答
0

您的浏览器一直等待的原因是因为您没有结束您的响应。您必须调用 response.end 让您的服务器完成响应,否则它会一直认为响应尚未完成。我在你的 if 语句中添加了一行并测试了你的代码,它工作得很好。

添加行 ** response.end("请求已成功处理...\n");**,假设您需要显示不同的消息以防您的“else”语句。我测试了 url http://:1213/?name=tom

var http = require('http');
var url = require('url');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {
var queryData = url.parse(request.url, true).query;
response.writeHead(200, {"Content-Type": "text/plain"});

if (queryData.name) {
// user told us their name in the GET request, ex: http://host:8000/?name=Tom
var exec = require('child_process').exec;
function puts(error, stdout, stderr) {sys.puts(stdout)}
exec ("casperjs test.js " + queryData.name + '\n');
response.end("Request processed successfully...\n");   


} else {
response.end("Contact Admin - Not Working\n");
}
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(1213);
于 2014-02-16T01:08:18.320 回答