最近、node.js を使用して Web アプリを作成しているときに、非常に興味深い問題に遭遇しました。基本的に、私がしているのは、index.htmlページをクライアントに提供することだけです。
コードは次のとおりです。
var http = require('http');
var url = require('url');
var fs = require('fs');
var util = require('util');
var server = http.createServer(function(req, res){
var path = url.parse(req.url).pathname;
if(path == '/'){
console.log("LOADING INDEX...");
openIndex(req, res);
console.log("LOADING COMPLETE.")
} else {
res.write("Something went wrong...");
res.end();
}
}
);
var openIndex = function(req, res){
fs.readFile('./index.html', function(error, content){
if(error){
res.writeHead(500);
res.end();
}
else{
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(content, 'utf-8');
}
});
}
index.htmlページのロードの直前と直後に、いくつかのデバッグ ステートメントを配置しました: "LOADING INDEX..."および"LOADING COMPLETE"。
今、私は自分のサーバーへのリンクを Facebook の友達と共有して、彼らが私のアプリを見ることができるようにしました。ほとんどの場合、すべてが正常に機能しますが、たまに次のエラーが発生します。
インデックスを読み込んでいます...
このタイプの応答には本文があってはなりません。end() に渡されたデータを無視します。
そして今、私も得ました:
インデックスを読み込んでいます...
このタイプの応答には本文があってはなりません。write() 呼び出しを無視します。
プロセスが「LOADING COMPLETE」ステートメントを実行することはありません。
私はこれを数え切れないほど再現しようとしましたが (さまざまなマシン、ブラウザー、デバイス、OS バージョンでアプリにアクセスして)、毎回正常に動作します。私はこの問題を抱えている他の人を探しましたが、どういうわけか体がGET応答になっているようです? これが何を意味するのか、またはそれを防ぐためにコードを修正する方法が完全にはわかりません。また、このエラーを生成するクライアントに何が表示されるかわかりませんか? 彼らは私のアプリを見ることができますか? (つまり、これらは単なる警告であり、それらに関する限り、すべて問題ありませんか?)
これに関するヘルプは大歓迎です。
ザーン