为什么不是';t node.js(Express)服务于此路线?我该如何修复它?

为什么不是';t node.js(Express)服务于此路线?我该如何修复它?,node.js,http-status-code-404,Node.js,Http Status Code 404,我正在写一个应用程序,我试图找出为什么这个登录的帖子没有注册 如果任何人有更好的路线模型,他们可以分享或解决问题,请回复 从“express”导入express; const router=express.router(); router.route('/login').post((req,res)=>{ log('login'); let user=Users.getUser(req.body.email); 如果(!用户){ log(`找不到用户:${user}`); res.status

我正在写一个应用程序,我试图找出为什么这个登录的帖子没有注册

如果任何人有更好的路线模型,他们可以分享或解决问题,请回复

从“express”导入express;
const router=express.router();
router.route('/login').post((req,res)=>{
log('login');
let user=Users.getUser(req.body.email);
如果(!用户){
log(`找不到用户:${user}`);
res.status(401).send('找不到用户名');
返回;
}
bcrypt.compare(req.body.pass,user.password,(err,goodComparison)=>{
如果(错误){
控制台日志(err);
物质状态(401);
}else if(良好比较){
//良好的密码,生成密钥,发送响应
let key=Sessions.generateSession(用户,令牌=>{
让响应数据={
id:user.id,
用户名:user.username,
电子邮件:user.email,
admin:user.admin,
令牌:令牌
};
res.status(200).json(responseData);
});
//无效密码
}否则{
物质状态(401);
}
});
});

导出{路由器}使用
const router=express.router()在第二个代码块中创建的路由器从未连接到任何东西。它需要连接到连接到http服务器的express实例

仅仅调用
router.use(…)
本身不会导致任何结果。该路由器必须连接到一个Express实例,该实例本身连接到一个http服务器,该服务器已启动,以便将传入的http请求发送到路由器


此外,您似乎还试图为
/login/login
创建路由,而不仅仅是
/login
。执行此操作时:

router.use('/login', loginRouter); 
也就是说,无论发送到
路由器
的请求是什么,都要过滤掉该请求,以便只将以
/login
开头的请求发送到
登录外部
。然后,在
loginRouter
的内部,您有:

router.route('/login').post(...)
也就是说,对于到达
路由器
(实际上是前一个代码中的
loginRouter
)的请求,在已经匹配的任何位置上查找
/login
的附加路径。这意味着您将寻找
/login/login
,这可能不是您要发布的内容



仅供参考,当您在不同的文件中为同一路由器使用不同的符号名时,您的代码就更难理解了。如果要在一个位置使用
loginRouter
,那么对于特定的路由器,在所有文件中使用相同的名称。您的代码将不会那么混乱,也不会有人犯错误。你在一个地方称它为
loginruter
,在另一个地方称它为
router
。然后,您还有其他路由器,您也可以称之为
路由器
。非常混乱。

非常感谢您详细而仓促的回复,您对我如何将路由装载到http服务器或最好是一个github项目有什么建议,其中有一个在es6中做得很好的路由示例,我搜索了很多,但找不到一个路线做得很好的es6项目。@z21-我没有具体的教程可以推荐。我总是说从简单开始,让简单的东西在一个文件中工作,然后将一些代码移动到一个新文件中,并确保导出与以前使用的完全相同的内容,并将一部分功能分解到一个新的模块文件中。我看到很多新手从10个文件和一个分层的文件结构开始,然后就被搞糊涂了。当你开始工作时,你无法透过树木看到森林。你不需要开始那么复杂。如果文件太大,您总是可以将代码旋出到新的模块文件中。@z21-而且,出于某种原因,node.js开发人员似乎认为他们在一个源文件中不能有超过100行的代码或几条路由。根本没有这样的要求。保持事情简单,直到你有充分的理由让事情变得不那么简单。而且,您获得的经验越多,您就越有能力知道如何破解另一个文件,以及如何执行该操作和/或在出现问题时如何调试该文件。