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

使用Express时路由异常:About路由错误,Palindrome与Feedback路由失效

Express路由异常(404/路由未执行)问题排查与修复

核心问题分析

从报错日志和代码来看,导致路由失效的关键原因有两个:

  1. 自定义路由未挂载到Express应用:app.js中仅引入了路由模块,但未通过app.use()将其注册到应用中,导致Express无法识别/about、/feedback等路由规则
  2. 路由文件缺少Express依赖引入:finalRoutes.js中直接使用express.Router(),但未先引入express模块,会导致运行时错误
  3. 静态文件中间件优先级高于路由(次要问题,需确保路由挂载在静态中间件之后,避免被拦截)

分步修复

1. 修复路由文件(src/routes/finalRoutes.js)

在文件顶部添加express的引入,否则express.Router()会抛出引用错误:

const express = require('express'); // 新增这一行
const router = express.Router();

const controller = require("../controllers/finalController");

function routes () {
    const{getAbout,getFeedback,getPalindrome} = controller();

    router.route("/about").get(getAbout);
    router.route("/palindrome").get(getPalindrome);
    router.route("/feedback").get(getFeedback);

    return router;
}
module.exports = routes;

2. 在app.js中挂载自定义路由

在app.js中添加路由挂载代码(建议放在静态文件中间件之后、视图引擎设置完成之后):

// 原有的代码...
app.set("view engine", "ejs");

// 新增:挂载自定义路由到根路径
app.use('/', finalRouter);

// 原有的bootstrap静态资源挂载代码...
app.use(
   "/css",
   express.static(
     path.join(__dirname, "node_modules", "bootstrap", "dist", "css")
   )
 );
// ...其余代码

修复逻辑说明

  • 挂载路由后,当访问/about、/feedback等路径时,Express会优先匹配路由规则,而非直接去public目录查找静态文件
  • 路由文件修复后,express.Router()能正常创建路由实例,不会抛出运行时错误

修复后验证

重启服务器后访问对应路径:

  • /about:执行getAbout控制器,渲染about.ejs视图
  • /feedback:执行getFeedback控制器,渲染feedback.ejs视图
  • /palindrome:执行getPalindrome控制器,渲染palindrome.ejs视图

内容的提问来源于stack exchange,提问作者Nefelibata

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:04:54