write after end -- nodejs response
10443 단어 nodejs
var server=require("./server");
var route=require("./route");
var requestHandlers=require("./requestHanders");
var handle={};
handle["/"]=requestHandlers.start;
handle['/start']=requestHandlers.start;
handle["/upload"]=requestHandlers.upload;
server.start(route.route,handle);
server.js
var http =require("http");
var url=require("url");
function start(route,handle){
var onRequest=function(request,response){
var postData="";
var pathname=url.parse(request.url).pathname;
console.log("request for "+pathname+" have received");
request.setEncoding("utf-8");
request.addListener("data",function(postDataChunk){
postData += postDataChunk;
console.log("receive POST data chunk '"+ postDataChunk + "'.");
})
request.addListener("end",function(){
console.log(postData);
route(handle,pathname,response,postData);
})
route(handle,pathname,response);
}
http.createServer(onRequest).listen(3000);
console.log("Server has started");
}
module.exports.start=start;
route.js
function route(handle,pathname,response,postData){
console.log("about to route a request for"+ pathname);
if(typeof handle[pathname]=='function'){
console.log("route--"+postData);
handle[pathname](response,postData);
}else{
console.log("No request handler found for "+ pathname);
response.writeHead(404,{"Content-Type":"text/plain"});
response.write("404 not found");
response.end();
}
}
module.exports.route=route;
requestHandles.js
var exec = require("child_process").exec;
var querystring=require("querystring");
function start(response,postData) {
console.log("request handler 'start' was called");
var body=''+
''+
'"Content-Type" content="text/html";'+
'charset=UTF-8" />'+
''+
''+
'post">'+
'20" cols="60" >'+
'" value="Submit text" />' +
''+
''+
'';
response.writeHead(200,{ "Content-Type": "text/html"});
response.end(body);
}
function upload(response,postData){
console.log("request handler 'upload' was called");
console.log("handle-upload"+ postData);
response.writeHead(200, {
"Content-Type": "text/plain"
});
var message="you have sent text "+ querystring.parse(postData).text;
console.log(message);
response.write(message);
response.end();
}
module.exports.start=start;
module.exports.upload=upload;
브 라 우 저 에서 먼저 접근http://127.0.0.1:3000/start; textarea 입력 이 나타 나 면 123345345323 을 입력 하고 제출 을 누 르 십시오.http://127.0.0.1:3000/upload 정상적으로 되 돌아 가 야 합 니 다. you have sent text 123345345323, 하지만 되 돌아 갑 니 다 you have sent text undefined
또한 콘 솔 에 다음 과 같은 오류 가 발생 했 습 니 다.
events.js:183
throw er; // Unhandled 'error' event
^
Error: write after end
at write_ (_http_outgoing.js:625:15)
at ServerResponse.write (_http_outgoing.js:620:10)
at Object.upload [as /upload] (D:\study\js\study01\requestHanders.js:30:14)
at route (D:\study\js\study01\route.js:5:24)
at IncomingMessage. (D:\study\js\study01\server.js:17:13)
at emitNone (events.js:106:13)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
D:\study\js\study01>
해답 을 구하 다Any help with this would be amazing. The few sparse answers I’ve found online don’t help at all.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.