Being a somewhat old Node.js web app framework and being one of the most widely used frameworks, Express.js has matured quite a lot during all that time. It's more stable than its competitors and a huge community backing it.
Express considers itself to be a "minimalistic unopinionated framework", it basically lets the developer determine how their project will be organized. On one hand, this gives anyone terrific power and flexibility to use any library they want for a certain task and to organize their proje...
Hapi's philosophy is that configuration is more important than code. This is especially useful for very large teams because it helps developers maintain consistency and reusability throughout their code.
Hapi seems to be made with large applications in mind. The sheer amount of boilerplate code it requires is simply not practical for a small web app. This also means that there are few examples of Hapi applications around for beginners to learn from.