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

Express搭建Node.js Webserver时所有页面均跳转至同一登录页求助

问题原因分析
  • 路由匹配顺序错误:Express的路由是按代码书写顺序从上到下匹配的,你先定义了匹配所有GET请求的app.route('/*').get(),所有请求走到第一个通配符路由就直接返回登录页,后面定义的第二个通配符路由永远不会被触发
  • 静态资源配置路径错误:express.static(__dirname + 'public/css')拼接路径时缺少斜杠,会生成你的项目目录public/css这类错误路径,导致静态资源加载失败
  • 没有为特定页面定义明确路由,全靠通配符匹配不符合多页面路由的开发逻辑
修复后的完整代码
const express = require('express')
const app = express()
const port = 3000
var path = require("path");
// 暂时未用到的依赖可以先注释,避免运行报错
// var request = require('request');
// const { get } = require('./routes/brand');

// 静态文件配置,用path.join拼接路径更稳妥,适配不同系统的路径分隔符规则
app.use(express.static('public'))
app.use('/css', express.static(path.join(__dirname, 'public/css')))
app.use('/img', express.static(path.join(__dirname, 'public/img')))
app.use('/js', express.static(path.join(__dirname, 'public/js')))

// 根路径路由,返回品牌页
app.get('/',(req, res) => {
   res.sendFile(path.join(__dirname, '/views/brand.html'));
})

// 明确匹配登录页请求
app.get('/login.html', function(req, res)  {
  res.sendFile(path.join(__dirname, '/views/login.html'));
});

// 明确匹配门店页请求
app.get('/localstores.html', function(req, res)  {
  res.sendFile(path.join(__dirname, '/views/localstores.html'));
});

// 通配符路由放在最后,用来处理未定义路径的请求,可根据需求替换为404页面
app.get('/*', function(req, res) {
  res.status(404).send('请求的页面不存在')
})

// 启动服务
app.listen(port,() => console.info(`Listening on port ${port}`))
补充说明

你现有HTML中的<a>跳转代码逻辑完全正常,修改完Express代码后重启服务,点击对应按钮即可正常跳转对应页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:45:01