You're right, or at least not incorrect :) If JavaScript started off with a module system, a decent core library, Promises, Classes, etc., a lot of this pain would have been avoided. But of course, part of it's beauty was that it was so simple. As these things become standardized in JS, hopefully the incompatible add-ons will fade away, but it'll take years.
Dart has an advantage of a clean slate, which is why it's "ok" in a sense - once you've decided to use Dart you also get decision/opinions on a lot more.