Express+Handlebars项目访问/index、/login路径提示Cannot GET报错求助
问题排查及修复方案
1. 路由配置错误(核心问题)
你当前仅配置了根路径/的GET请求处理规则,没有声明/index、/login路径对应的路由,Express找不到匹配的处理逻辑就会返回Cannot GET xxx的404报错。
此外你定义了两个重复的app.get('/', ...)规则,后定义的会覆盖前者,现在你访问根路径实际渲染的是login页面,而非你预期的index首页。
将路由部分代码修改为以下内容即可:
// ROUTES // 根路径渲染首页 app.get('/', (req, res) => { res.render("index", { title: "Home" }); }); // 新增/login路径路由 app.get('/login', (req, res) => { res.render('login', { title: "Login" }); }); // 如果你需要/index路径也可以访问首页,额外新增以下路由 app.get('/index', (req, res) => { res.render("index", { title: "Home" }); });
2. express-handlebars版本兼容问题
如果你使用的是v6及以上版本的express-handlebars,旧的初始化写法已经废弃,会导致模板渲染报错,需要调整引入和初始化逻辑:
// 把原来的const hbs = require('express-handlebars')替换为 const { engine } = require('express-handlebars'); // 把原来的app.engine替换为 app.engine('hbs', engine({ extname: '.hbs'}));
修改完成后重启服务即可正常访问对应路径。
内容的提问来源于stack exchange,提问作者Quinn McDougall
相关产品推荐
相关产品推荐

