Express渲染public静态页面触发pagenotfound、移除后报Cannot GET /问题求助
问题排查解决步骤
1. 修正静态页面文件名大小写
express.static 默认匹配的首页文件名为全小写的index.html,你当前public目录下的页面文件是大写开头的Index.html,大小写不匹配是最直接的触发原因,直接将文件名修改为全小写的index.html即可。
2. 替换静态资源目录为绝对路径
相对路径./public会受服务启动时的执行目录影响,容易出现路径解析失败的问题,建议修改为基于项目根目录的绝对路径写法:
const path = require('path') // 替换原有app.use(express.static('./public'))代码 app.use(express.static(path.join(__dirname, 'public')))
3. 排查路由冲突
- 检查
./routers/sign-up路由文件中是否定义了根路径相关的GET路由,避免和静态资源路由产生冲突 - 你当前代码中
pagenotfound中间件的放置位置是正确的(所有路由之后),上述问题修复后可以把该中间件加回去,不影响正常功能
4. 可选配置:自定义首页文件名
如果确实需要保留Index.html的大写命名,可以显式给express.static指定首页参数:
app.use(express.static(path.join(__dirname, 'public'), { index: 'Index.html' }))
内容的提问来源于stack exchange,提问作者penguinz0
相关产品推荐
相关产品推荐

