NodeJs问题求助
NodeJs问题求助
var handle = {};
handle["/"] = requestHandlers.start; handle["/upload"] = requestHandlers.upload; handle["/start"] = requestHandlers.start;
console.log("===handle==="+handle["/upload"]); 用这个怎么打印出来的是undefined?? 我是新手昨天刚学,希望大家指点下!!
当然可以!根据你提供的代码片段,看起来你在尝试创建一个路由处理器对象,并且希望打印出某个特定的处理器。然而,你在代码中存在一些重复和潜在的错误。让我们一步一步来解决这个问题。
首先,我们来看一下你的代码:
var handle = {};
handle["/"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
handle["/start"] = requestHandlers.start;
从这段代码可以看出,handle["/start"]
被设置为 requestHandlers.start
,而不是 requestHandlers.upload
。这可能是导致你看到 undefined
的原因。
为了更好地理解并解决问题,我们需要确保 requestHandlers
对象中确实存在这些方法。假设 requestHandlers
是一个对象,其中包含了一些处理函数,例如 start
和 upload
。
以下是一个完整的示例代码,以帮助你理解如何正确地设置和使用路由处理器:
// 假设这是你的 requestHandlers 对象
const requestHandlers = {
start: function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("This is the start handler");
response.end();
},
upload: function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("This is the upload handler");
response.end();
}
};
// 创建路由处理器对象
var handle = {};
// 设置路由处理器
handle["/"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
handle["/start"] = requestHandlers.start;
// 打印出特定的处理器
console.log("===handle===", handle["/upload"]);
在这个示例中:
- 我们定义了一个
requestHandlers
对象,其中包含两个处理函数start
和upload
。 - 我们创建了一个
handle
对象,并正确地设置了每个路径对应的处理函数。 - 最后,我们打印出
handle["/upload"]
来验证它是否被正确设置。
如果你仍然看到 undefined
,请检查 requestHandlers
对象是否正确加载或是否存在拼写错误。
希望这能帮助你解决问题!如果有任何其他疑问,请随时提问。
这个, 楼主描述详细一些吧, 或者是放别人能用命令本地测试的代码,
太短了理解不了的, 比如说这里的 requestHandlers
是什么要有个来头对吧
贴代码的时候记得开头结尾用三个反引号 ``` 的行标记一下~
问一下,怎么放别人能用本地命令测试的代码?? 下面是我用到的几个js文件: 1.index.js // index.js
var server = require("…/server/server");
var router = require("…/route/route");
var requestHandlers = ("…/requestHandlers");
var handle = {};
handle["/"] = requestHandlers.start; handle["/upload"] = requestHandlers.upload; handle["/start"] = requestHandlers.start;
var userObject = {}; // equivalent to new Object()
userObject[“lastLoginTime”] = new Date(); userObject["/upload"] = requestHandlers.upload;
//alert(userObject[“lastLoginTime”]);
console.log("===handle==="+userObject["/upload"]); console.log("===handle==="+handle["/upload"]);
server.start(router.route,handle);
2.server.js
// start.js
var http = require(‘http’); var url = require(“url”);
function start(route, handle){ function onRequest(request,response){ var parthname = url.parse(request.url).pathname; console.log('Request For ‘+ parthname + ’ received’);
route(handle, parthname);
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("Hello World !");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log(“Server Has Started PORT:8888.”);
}
exports.start = start;
3.route.js // route.js
function route(handle, pathname){ console.log('About To Route a Rrequest for '+pathname); console.log("-------test----------"+ handle[pathname]); if(typeof handle[pathname] === ‘function’){ handlepathname; } else { console.log("No rquest handler found for "+ pathname); } }
exports.route = route; 4.// requestHandlers.js
function start(){ console.log(“Request handler – start – was called”); }
function upload(){ console.log(“Request handler – upload – was called”); }
exports.start = start; exports.upload = upload;
问题已解决,谢谢大家的关注!!strong text
module.exports.start = start; module.exports.upload = upload;
根据你的描述,handle["/upload"]
打印出来是 undefined
的原因可能是因为 requestHandlers.upload
没有被正确地定义或引用。让我们通过一个简单的例子来解释这个问题。
假设你有一个 requestHandlers.js
文件,内容如下:
// requestHandlers.js
exports.start = function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("This is start page");
response.end();
};
exports.upload = function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("This is upload page");
response.end();
};
然后,在你的主文件(例如 server.js
)中,你需要正确地导入这些处理函数,并确保它们被正确引用。
// server.js
const http = require('http');
const url = require('url');
const path = require('path');
const fs = require('fs');
const requestHandlers = require('./requestHandlers'); // 正确引入 requestHandlers
var handle = {};
handle["/"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
handle["/start"] = requestHandlers.start;
console.log("===handle===", handle["/upload"]);
如果 handle["/upload"]
仍然显示为 undefined
,那么可能的原因是 requestHandlers.upload
没有被正确地导出或加载。请确保 requestHandlers.js
文件中的导出部分没有拼写错误或其他语法错误。
另外,你可以尝试打印 requestHandlers
对象来检查其内容,以确认 upload
处理程序是否被正确加载:
console.log("===requestHandlers===", requestHandlers);
这样可以帮助你诊断问题所在。希望这能帮助你解决问题!