Crosscode was amazing and is a pure JS/canvas game. I dunno I've fiddled a bit with some engines, but the tooling/docs are pretty lackluster compared to unity/godot
2. lack of mature tooling (Unreal dropped Web support, Unity pretty much has just 1 FTE maintaining WebGL support, and Godot is still catching up)
3. mobile UX sucks (try playing a game in Safari on iOS)
not to say it isn't possible to make really cool games on the web. and some have been quite successful recently, like FNF. but it's a verrrrry tiny slice of the overall games market, and has been shrinking over time since the death of flash and the rise of mobile