You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js路由问题:GET请求无法访问/speakers页面

Node.js路由问题:GET请求无法访问/speakers页面

看起来你在做Frontend Mentor的Audiophile全栈项目时遇到了路由相关的小麻烦,点击Speakers链接出现Cannot GET /speakers的错误,咱们一步步来排查解决:

1. 先修正App.js里的路由挂载方式

你当前写的app.get("/", viewRouter)是问题的核心之一——app.get()只会匹配根路径(/)的GET请求,并不会把viewRouter里的其他路由(比如/speakers)挂载到整个应用中。

你需要把这行代码改成:

// App.js
const viewRouter = require('./path/to/viewRouter'); // 确保这里的文件路径是正确的
// 替换原来的app.get("/", viewRouter)
app.use("/", viewRouter);

app.use()会让所有以/开头的请求都经过viewRouter处理,这样viewRouter里的/speakers路由才能被正确识别。

2. 确认viewRouter的导出是否正确

检查你的viewRouter.js文件,确保最后导出了Express的Router实例,不然App.js根本无法拿到这个路由模块:

// viewRouter.js
const express = require('express');
const router = express.Router();
const viewsController = require('./path/to/viewsController'); // 路径要对应你的文件位置

router.get("/speakers", viewsController.getSpeakers);

module.exports = router; // 这一行一定要有,别漏了!

3. 检查PUG模板的存放位置

你的viewsController.js里用了res.status(200).render("speakers");,Express默认会去项目根目录下的views文件夹找对应的PUG模板。所以要确认speakers.pug确实放在views文件夹里;如果模板在子目录(比如views/pages/speakers.pug),就要改成res.render("pages/speakers");。

4. 别忘了重启服务器

修改完路由配置后,一定要重启你的Express服务器,不然新的配置不会生效。重启后可以直接在浏览器地址栏输入127.0.0.1:3000/speakers测试,如果还是不行,看看控制台有没有报错信息(比如找不到模板、路由未注册之类的提示),能帮你更快定位问题。

另外,你的导航栏里Speakers的链接href="/speakers"是正确的绝对路径,不用改,其他链接用#暂时没问题,后续再替换成对应的路由就行。

备注:内容来源于stack exchange,提问作者Sonoran Studios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:42:57