Node.js:对象在响应对象中转换为undefined

我有一个简单的函数定义如下

function upload(response, postData) { console.log("Received: " + postData); response.writeHead(200,{"Content-Type":"text/plain"}); response.write("You've sent text: " + querystring.parse(postData).text); response.end(); } 

当我将数据logging到控制台时,它显示正确,但写入响应对象显示为“未定义”。 为什么会发生? 我的代码有错吗?

整个代码

route.js

 function route(handle, pathname, response, postData) { console.log("About to route a request for " + pathname); if(typeof(handle[pathname]) === 'function') { console.log(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(); } } exports.route = route; 

requestHandler.js

 var exec = require("child_process").exec; var querystring = require("querystring"); function start(response, postData) { console.log("request handler 'start' was called"); var body = '<html>' + '<head>' + '<meta http-equiv="Content-Type" content="text/html; ' + 'charset=UTF-8" />' + '</head>'+ '<body>'+ '<form action="/upload" method="post">'+ '<textarea name="text" rows="20" cols="60"></textarea>'+ '<input type="submit" value="Submit text" />'+ '</form>'+ '</body>' + '</html>'; response.writeHead(200,{"Content-Type": "text/html"}); response.write(body); response.end(); } function upload(response, postData) { console.log("Received: " + querystring.parse(postData).text); response.writeHead(200,{"Content-Type":"text/plain"}); response.write("You've sent text: " + querystring.parse(postData).text); response.end(); } exports.start = start; exports.upload = upload; 

server.js

 var http = require("http"); var url = require("url"); function start(route,handle) { function onRequest(request,response) { var postData = ""; var pathname = url.parse(request.url).pathname; console.log("Request received for " + pathname + " received."); request.setEncoding("utf8"); request.addListener("data", function(postDataChunk) { postData += postDataChunk; console.log("Received POST data chunk '" + postDataChunk + "'."); }); request.addListener("end", function() { console.log(postData); route(handle, pathname, response, postData); }); route(handle,pathname,response); } http.createServer(onRequest).listen(8888); console.log("Server has started..."); } exports.start = start; 

该代码执行两次,没有postData 。 谢谢Linus G泰尔。 在发布之前,我应该更好地清楚代码。

我认为这是一个错字使用

 querystring.parse(postData).undefinedtext 

用于requestHandler.js中的上传function

我正在通过相同的教程,也卡在这里了。

这显然比较晚,但是我和你有一样的错误,但是我没有执行两次。 我的错误是,我的postDatavariables是未定义的,因此它给

 undefinedtext=sometext+querttest 

这个问题很容易解决我初始化你的postData =“”。 希望这有助于任何未来的访客在这里卡住。