On the server, I would choose Go over Node any day of the week. Go is just as easy to use as Node, if not easier. Performance-wise, Go can run rings around Node. Go is a far superior language for concurrent programming. It can spin up hundreds of thousands of “goroutines” or threads without breaking a sweat. Let’s see Node do that.
Go also has a great package manager. And unlike NPM, Go doesn’t suffer from a huge mess of modules, many of which are abandoned, many of which do not work as advertised. And let’s not mention the fragile dependency trees. Go has a far more disciplined community.
Although I have no experience with Erlang/Elixir, I understand that it can also give Node a run for its money.
I concede that Node is pretty amazing technology. It’s a pity that Node is tied to a crap language. I see no reason to choose Node over Go or Erlang/Elixir. And if you’re willing to live in the JVM, I’d also choose Scala or Clojure or Kotlin.