Firebase部署后自定义域名无法识别Express根路由'/'问题
Firebase部署后自定义域名访问根路由返回Site Not Found问题
基础环境与路由配置
使用Node.js搭配Express与Pug构建应用,路由配置代码如下:
app.get('/', (req, res) => { res.render("index"); }); app.get('/pages/:page', (req, res) => { res.render(req.params["page"]); });
运行现象
- 本地运行全功能正常:无论是直接执行
node index.js启动服务,还是通过firebase emulators:start启动Firebase本地模拟器,两类路由都可正常访问。 - 线上部署异常表现:部署到Firebase后,根路由
'/'无法访问,返回Site Not Found错误;通过路径/pages/index即可正常加载对应的首页视图。 - 异常触发边界:该问题仅在通过自定义域名访问时触发,若使用Firebase分配的两个默认域名(
PROJECT-NAME.web.app或PROJECT-NAME.firebaseapp.com)访问,所有路由均可正常工作。 - 故障出现节点:此前项目运行完全正常,故障是在克隆开发目录、改用新目录执行部署操作后出现的,期间未修改核心
index.js文件,也未调整项目文件结构,Firebase日志中无相关异常记录。
相关配置
firebase.json配置内容如下:
{ "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "rewrites" : [ { "source": "**", "function": "app" } ] } }
后续处理
我最终放弃排查,将整个项目迁移至Heroku平台后运行状态良好,部署流程更简便,感谢各位的答复。
内容的提问来源于stack exchange,提问作者David Rea
相关产品推荐
相关产品推荐

