Node.js Express 路由路径配置错误导致子页面 404 的解决方案


express 应用中子页面返回 404,通常是因为 `app.use()` 注册的路由前缀与实际访问路径不匹配;本文通过对比日志与路由配置,定位并修复 `/wysylka` 和 `/zamowienia` 页面无法访问的根本原因。

在 Express 中,app.use(path, router) 的第一个参数定义的是该路由器所处理请求的公共路径前缀(即 mount point)。用户在浏览器中访问 /wysylka,就必须确保有对应 app.use('/wysylka', wysylkaRouter) 的注册;否则,即使路由文件内部定义了 router.get('/', ...),Express 也无法将请求分发到该路由器。

从你的日志可清晰看出问题所在:

GET /sprzet     200  → 成功(因 app.use('/sprzet', ...) 存在)
GET /zamowienia 404  → 失败(但 nav 中 href="/zamowienia")
GET /wysylka    404  → 失败(同理)

而你的 app.js 原始配置为:

app.use('/list-wys', wysylkaRouter);  // ❌ 访问 /list-wys 才能命中
app.use('/list', zamowieniaRouter);   // ❌ 访问 /list 才能命中

这导致:

  • 用户点击 → Express 查找 app.use('/wysylka', ...) → 未找到 → 进入 404 中间件
  • 实际上,wysylkaRoute.js 内部的 router.get('/') 是相对于挂载路径的——它响应的是 /list-wys/,而非 /wysylka/

✅ 正确做法是:让 app.use() 的路径与导航链接(href)完全一致。修改后如下:

app.use('/', indexRouter);           // 对应 /
app.use('/sprzet', sprzetRouter);    // 对应 /sprzet
app.use('/wysylka', wysylkaRouter);  // ✅ 对应 /wysylka
app.use('/zamowienia', zamowieniaRouter); // ✅ 对应 /zamowienia

同时,请确认对应路由文件已正确导入(你已做到):

const wysylkaRouter = require('./routes/wysylkaRoute');
const zamowieniaRouter = require('./routes/zamowieniaRoute');

⚠️ 注意事项:

  • 路由挂载路径(app.use 第一个参数)必须与前端 的路径严格一致
  • router.get('/') 中的 '/' 是相对路径,表示“挂载点下的根”,例如 app.use('/wysylka', router) + router.get('/') = 响应 GET /wysylka;
  • 修改后务必重启 Node.js 服务(Express 不支持热重载路由配置);
  • 可添加调试中间件快速验证路由是否生效:
    app.use('/wysylka', (req, res, next) => {
      console.log('[DEBUG] /wysylka route hit');
      next();
    }, wysylkaRouter);

修复后,访问 /wysylka 将成功触发 wysylkaController.showWysylkaList,渲染 pages/wysylka/list-wys.ejs,且导航栏 navLocation == 'wys' 判断也将正确激活对应菜单项。这是 Express 路由机制的基础原则——路径挂载即契约,前后端必须对齐


# js  # 前端  # node.js  # node  # 浏览器  # app  # 路由器  # 后端  # 路由  # 中间件  # express 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win11怎么设置应用分屏_Windows11贴靠布局Snap Layouts  php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】  Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】  如何在Golang中配置代码格式化工具_使用gofmt和goimports  Win11笔记本怎么看电池健康度_Win11电池报告生成命令【详解】  Win11怎么硬盘分区 Win11新建磁盘分区详细教程【步骤】  VSC里PHP变量未定义报错怎么解决_错误抑制技巧【解答】  c++ atoi和atof函数用法_c++字符数组转数字  Go 中实现 Python urllib.quote() 功能的等效方法  如何使用Golang处理网络超时错误_Golang请求超时异常处理方法  Windows服务无法启动错误1067是什么_进程意外终止的解决方法  Windows10怎么卸载预装软件_Windows10预装软件卸载步骤【教程】  Win11怎么设置任务栏图标大小_Windows11注册表TaskbarSi修改  Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】  如何使用Golang管理模块版本_Golanggo mod tidy与升级方法  Win11怎么修复系统文件_使用sfc命令修复Win11系统【技巧】  Win10如何备份驱动程序_Win10驱动备份步骤【攻略】  Python集合操作技巧_高效去重解析【教程】  Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】  Win11怎么关闭OneDrive同步_Win11取消自动备份文件【教程】  VSC怎么快速定位PHP错误行_错误追踪设置法【方法】  新手学PHP架构总混淆概念咋办_重点梳理【教程】  Win11怎么设置默认视频播放器_Windows 11关联媒体文件打开方式【步骤】  Win11怎样安装搜狗输入法_Win11安装搜狗输入法教程【步骤】  PythonGIL机制理解_多线程限制解析【教程】  Windows10系统更新错误0x80070002_Win10自动更新失败手动修复  如何在Golang中写入JSON文件_保存结构体数据到文件  Win11怎么设置默认终端应用_Windows11开发者选项终端  Win11怎么开启HDR模式_Windows 11高动态范围显示设置指南【详解】  如何使用Golang构建简易投票统计功能_Golang投票数据汇总与展示示例  Windows10系统怎么查看已安装更新_Win10控制面板卸载补丁  如何在 Go 后端安全获取并验证前端存储的 JWT?  Windows如何拦截2345弹窗广告_Windows拦截2345弹窗方法【步骤】  如何使用Golang实现基本类型比较_Golang比较操作符使用方法  php打包exe后无法写入文件_权限问题解决方法【教程】  Windows 11如何查看系统激活密钥_Windows 11使用CMD或PowerShell命令找回Product Key  如何使用Golang sort排序切片_Golang sort排序方法示例  Mac电脑进水了怎么办_MacBook进水后紧急处理方法【必看】  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  网站体验不好=浪费钱:如何提升-用户体验效果差  php在Linux怎么部署_LNMP环境搭建PHP服务的详细指南【指南】  Win11怎么设置快速访问_Windows11文件资源管理器主页  Python深度学习实战教程_神经网络模型构建与训练  Win11怎么关闭用户账户控制UAC_Windows11更改通知设置等级  php订单日志怎么在swoole写_php协程swoole写订单日志教程【教程】  Mac上的iMovie如何剪辑视频?(新手入门教程)  Win11怎么更改文件夹图标_自定义Win11文件夹外观样式【详解】  如何在Golang中使用内置函数_Golanglen append make等使用技巧  如何在Golang中修改数组元素_通过指针实现原地更新  Windows10系统服务优化指南_Win10禁用不必要服务提升性能 

 2025-12-26

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.