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

Node.js Express应用/zamowienia与/wysylka页面404错误求助

Node.js Express应用中/zamowienia和/wysylka页面返回404错误排查

开发个人网站的简易Node.js应用,已完成app.js、控制器及路由配置。主页与/sprzet子页面可正常访问,但/zamowienia和/wysylka两个子页面持续返回404错误。从结构上看,这两个页面的构建方式与/sprzet基本一致,追踪app-路由-控制器的调用流程未发现异常。

控制台输出

GET / 304 1.443 ms - -
GET /css/style.css 304 0.325 ms - -
GET /images/IMG_2202.png 304 0.639 ms - -
GET /images/vertabelo-tabele.png 304 0.774 ms - -

GET /sprzet 200 1.904 ms - 3241
GET /css/style.css 304 0.393 ms - -
GET /images/IMG_2202.png 304 0.501 ms - -

GET /zamowienia 404 1.152 ms - 1393

GET /wysylka 404 0.917 ms - 1393

相关代码片段

app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
const sprzetRouter = require('./routes/sprzetRoute');
const wysylkaRouter = require('./routes/wysylkaRoute');
const zamowieniaRouter = require('./routes/zamowieniaRoute');
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/sprzet', sprzetRouter);
app.use('/list-wys', wysylkaRouter);
app.use('/list', zamowieniaRouter);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

wysylkaRoute.js

const express = require('express');
const router = express.Router();

const wysylkaController = require('../controllers/wysylkaController');

router.get('/', wysylkaController.showWysylkaList);
router.get('/add', wysylkaController.showAddWysylkaForm);
router.get('/details/:wysId', wysylkaController.showWysylkaDetails);

module.exports = router;

wysylkaController.js

const { Router } = require("express");

exports.showWysylkaList = (req, res, next) => {
    res.render('pages/wysylka/list-wys', {
        navLocation: 'wys'
    });
}

exports.showAddWysylkaForm = (req, res, next) => {
    res.render('pages/wysylka/form-wys', {
        navLocation: 'wys'
    });
}

exports.showWysylkaDetails = (req, res, next) => {
    res.render('pages/wysylka/list-wys-details', {
        navLocation: 'wys'
    });
}

导航代码(EJS)

<nav>
<ul>
<li><a href="/" class="<%= navLocation == 'main' ? 'active' : ''%>">Strona główna</a></li>
<li><a href="/zamowienia" class="<%= navLocation == 'zam' ? 'active' : ''%>">Zamówienia</a></li>
<li><a href="/sprzet" class="<%= navLocation == 'sprz' ? 'active' : ''%>">Sprzęt</a></li>
<li><a href="/wysylka" class="<%= navLocation == 'wys' ? 'active' : ''%>">Wysylka</a></li>
</ul>
</nav>

问题原因及解决方案

问题出在路由挂载路径与导航链接不匹配:

  • 导航中访问的是/wysylka,但app.js里将wysylkaRouter挂载到了/list-wys路径
  • 导航中访问的是/zamowienia,但app.js里将zamowieniaRouter挂载到了/list路径

修改app.js中的路由挂载代码,将路径改为与导航一致:

// 替换原有的对应行
app.use('/wysylka', wysylkaRouter);
app.use('/zamowienia', zamowieniaRouter);

同时需要确认zamowieniaRoute.js的结构是否与sprzetRoute.js、wysylkaRoute.js一致,即是否包含处理根路径GET '/'的路由,确保控制器能正确渲染页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:40:19