The difficulty is with the number of JS libraries and the frequency with which they disrupt themselves and each other. Maybe the best example is Angular, where upgrading requires learning Typescript. However similar issues arise with Node (it’s been around only 8 years yet has gone through 10 major versions, most with breaking changes.
JavaScript is a horrible language, but unless Google can convince other browser makers to support Dart, or any thing really that’s not JavaScript, for web apps we’re pretty much stuck with it.
(I used Amber-Lang for a while, and while it generates excellent code, following the much stricter rules of Smalltalk, the difficulty of integrating every new version of every library became too onerous. The last time I used it it was running on Node.js 4 while the people behind Node were not supporting anything earlier than 6.x, and the current version was 8.x)