これは私のhttpサーバーを実行するコードです。GETリクエストのキーとJSONファイルの "users"というキーを比較します。このファイルにリストされている最初の2人のユーザーのうちの1人のキーを使用すると、うまく動作しているように応答します。私はしかし、第3のユーザのキーを使用すると、403エラーで応答(それは、この(エラーのためにこれらのiamgesを見る引き起こす可能性が何the response.writeHead(403);
ラインを実行します:?https://imgur.com/a/jC7zn)NodeJS/javascriptで「エラー:終了後に書き込む」というメッセージが表示されるのはなぜですか?
var httpserver = http.createServer(function(request, response) {
try {
var key = '';
if (request.url.indexOf('k=') != -1) {
key = request.url.substring(request.url.indexOf('k=') + 2);
}
for (i = 0; i < Object.keys(users).length; i++) {
if (users[Object.keys(users)[i]].apikey == key) {
response.writeHead(200, {
'Content-Type': 'application/json'
});
response.write(JSON.stringify(users, null, '\t'));
response.end();
} else {
response.writeHead(403);
response.end();
}
}
} catch (err) {
console.log(err);
}
});
「ユーザー」JSON。ファイル(obiousの理由のために難読化されたIDの、名前とAPIkeys):これは誤りである
{ "user1": {
"auth": "3",
"name": "Name1",
"apikey": "key1" },
"user2": {
"auth": "3",
"name": "Name2",
"apikey": "key2" },
"user3": {
"auth": "3",
"name": "Name3",
"apikey": "key3" }
}
私が手:
Error: write after end
at write_ (_http_outgoing.js:625:15)
at ServerResponse.write (_http_outgoing.js:620:10)
at Server.<anonymous> (pathtoserver/server.js:42:16)
at emitTwo (events.js:126:13)
at Server.emit (events.js:214:7)
at parserOnIncoming (_http_server.js:602:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:117:23)
は用心、サーバーでのライン42文字16((pathto。 server/server.js:42:16))は、 response.write(JSON.stringify(users, null, '\t'));
を参照してください。
3人目のユーザーを見つけ出す前にループが長くかかっていて、その前に接続が閉じているような気がします。これは何ができますか?
私は十分な情報を提供することを願っています。そうでない場合は、私があなたの援助に役立つ追加できるものを求めてください。
P.S.英語は母国語ではなく、私はまだ高校に通っていることに注意してください。つまり、この文章には間違いがあるかもしれません。
あなたのコードはループ内で 'response.end()' *を呼び出します。 *常に* "書き込み後に終了"エラーが発生します。 – Pointy
ああ、私はこれに気付かなかったので、愚かです、ありがとう!私は今はあまりにも疲れていると思っています。実際に結果を考えずに物事を動かしていたのです!私は明日続けます。ありがとう! –