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

if が true の場合に 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 ステートメントに行を追加してコードをテストしたところ、問題なく動作しています。

「else」ステートメントの場合に別のメッセージを表示する必要があると仮定して、行 ** response.end("リクエストが正常に処理されました...\n");** を追加しました。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 に答える