Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chosenHandlers不是nodejs中的函数错误_Javascript_Node.js - Fatal编程技术网

Javascript chosenHandlers不是nodejs中的函数错误

Javascript chosenHandlers不是nodejs中的函数错误,javascript,node.js,Javascript,Node.js,所以,我一直在尝试与一位Skillshare教师一起创建我的第一个node.js项目,然而,虽然他没有遇到这个错误,但我确实遇到了。我已经仔细阅读了代码,但是当我是node.js的初学者时,我能做的很少。这是代码。如果你能帮我调试正在发生的事情,我将不胜感激。我先谢谢你 var http=require('http'); var url=require('url'); var StringDecoder=require('string_decoder')。StringDecoder; var s

所以,我一直在尝试与一位Skillshare教师一起创建我的第一个node.js项目,然而,虽然他没有遇到这个错误,但我确实遇到了。我已经仔细阅读了代码,但是当我是node.js的初学者时,我能做的很少。这是代码。如果你能帮我调试正在发生的事情,我将不胜感激。我先谢谢你

var http=require('http');
var url=require('url');
var StringDecoder=require('string_decoder')。StringDecoder;
var server=http.createServer(函数(req,res){
//解析URL
var parsedURL=url.parse(req.url,true);
//找到路
var path=parsedURL.pathname;
var trimmedPath=path.replace(/^\/+\/+$/g,,)
//质询
var queryStringObject=parsedURL.query;
//获取HTTP方法
var method=req.method.toLowerCase();
//将标题作为对象获取
var headers=req.headers;
//获取有效载荷(如果有的话)
var解码器=新的字符串解码器('utf-8');
var缓冲区=“”;
请求开启(“数据”,功能(数据){
缓冲区+=解码器写入(数据);
}); 
请求on('end',function(){
buffer+=解码器.end();
//选择此请求应转到的处理程序
var chosenHandler=typeof(路由器[trimmedPath])!='underfined'?路由器[trimmedPath]:handlers.notfound;
//构造数据对象以发送处理程序
风险值数据={
“trimmedPath”:trimmedPath,
“queryStringObject”:queryStringObject,
“方法”:方法,
“头”:头,
“有效负载”:缓冲区
};
//将请求路由到处理程序
chosenHandler(数据、功能(状态代码、有效负载){
状态代码=类型(状态代码)=“编号”?状态代码:200;
有效载荷=类型(有效载荷)=“对象”?有效载荷:{};
var payloadString=JSON.stringify(有效载荷);
res.writeHead(状态代码);
res.end(payloadString)
//记录路径
log('返回此响应:',状态码,payloadString);
});        
});
});
监听(3000,函数(){
console.log(“在端口3000上侦听”)
});
//定义处理程序
var处理程序={};
//样本处理程序
handlers.sample=函数(数据,回调){
回调(406,{'name':'sample handler'})
};
//未找到处理程序
handlers.notfound=函数(数据,回调){
回调(404);
};
//定义一个请求路由器
var路由器={
“sample”:handlers.sample
};

var chosenHandler=router[trimmedPath]| | handlers.notfound

试试这个
var chosenHandler=router[trimmedPath]| | handlers.notfound它工作得很好,谢谢@埃弗特维德。成功了!非常感谢。但是为什么没有
var chosenHandler=typeof(路由器[trimmedPath])!='罚款不足?路由器[trimmedPath]:handlers.notfound按预期工作?这正是讲师在视频中展示的内容。我复制了它,努力寻找我的错误,最终找到了这条线索。我只是想知道为什么它对讲师有效,而对@MaxPan和I无效。node.js可能会有变化吗?无论如何,再次感谢你的帮助!!!麦克斯,谢谢你提出最初的问题。你帮我省去了询问和等待答复的麻烦。:)<代码>路由器[trimmedPath])!='罚款不足的“
有一个输入错误<代码>'underfined'
应该是
未定义的
。我只是把它简化了一点,让它更具可读性。我怀疑我的也说了
定义不清
。这不是我通常犯的错误(尽管我犯了几十个其他错误!),我也没有复制/粘贴代码。所以这仍然不能解释最初的三元方法是否有问题。我确实是用你的简化代码工作的。也许我会在完成本教程的下一部分后返回,看看是否可以使用原始的三元结构。无论如何,再次谢谢你!