使用express.static后index.ejs无法加载 其余EJS文件正常运行问题求助
问题根源
你的配置顺序导致express.static静态中间件优先级高于根路由:
当你访问根路径/时,静态中间件会优先扫描frontend目录下是否存在index.html默认索引文件,只要存在就会直接返回该静态文件,不会继续执行后续的res.render("index")逻辑。
而/create路由没有对应的静态文件匹配,所以中间件处理失败后会正常走到你定义的渲染逻辑,这就是其他页面正常唯独首页异常的核心原因。
解决方案,任选一种即可
- 直接删除
frontend目录下的index.html文件,这是最简单的处理方式 - 给静态中间件添加配置,禁用默认的索引文件匹配:
app.use(express.static(__dirname + "/frontend", { index: false })); - 把根路由的定义挪到静态中间件定义之前,让路由优先处理根路径请求:
app.get("/", (req, res) => { res.render("index"); }); app.use(express.static(__dirname + "/frontend"));
额外排查项
如果上述方案都无效,优先检查views目录下的index.ejs文件名是否完全匹配,注意大小写拼写(Linux/macOS环境下大小写敏感,Index.ejs、index.EJS都会被判定为不存在)。
内容的提问来源于stack exchange,提问作者Viraj Doshi
相关产品推荐
相关产品推荐

