运行Express项目时浏览器提示Cannot GET /index.html如何解决?
问题原因
你代码中配置的静态资源服务目录为public文件夹:
app.use(express.static('public'));
但从你给出的项目目录结构来看,index.html、signup_success.html、style.css这些静态资源都直接放在app根目录下,不存在于public文件夹中,Express无法在指定的静态资源目录下找到对应文件,因此返回404错误Cannot GET /index.html。
解决方案
有两种可落地的方案,按需选择即可:
方案1:调整静态资源目录配置(快速生效)
把静态资源服务的目录修改为app.js所在的当前目录,替换原有express.static配置:
// 把原来的 app.use(express.static('public')); 替换为下面这行 app.use(express.static(__dirname));
修改后重启服务即可正常访问。
方案2:调整目录结构(更符合Express项目规范)
Express官方推荐静态资源统一放在public目录下,和业务逻辑代码做隔离,操作步骤如下:
- 在
app根目录下新建public文件夹 - 把
index.html、signup_success.html、style.css三个文件移动到public文件夹中 - 不需要修改原有代码,直接重启服务即可生效
额外优化建议
为了避免相对路径跳转异常,可以把两处redirect的路径改为绝对路径,更稳妥:
// 原 return res.redirect('signup_success.html'); 改为 return res.redirect('/signup_success.html'); // 原 return res.redirect('index.html'); 改为 return res.redirect('/index.html');
内容的提问来源于stack exchange,提问作者Akash Kumar
相关产品推荐
相关产品推荐

