Most people who ask me this are familiar with shared hosting providers like GoDaddy, Bluehost, and others. They’ve probably installed a WordPress site or maybe written their own PHP application. In that case, they upload it to a directory on their server, and it just … works. When they try the same thing with a Node app, nothing happens.
The reason for this is because those shared hosts are running a webserver, typically Apache, and the webserver parses the PHP files and executes the code in them. That’s not how Node works. Node is not a webserver … it’s lower-level than that. It’s an application platform on which Express, which is the actual webserver, runs. That means Node.js needs to be installed at the server level so that it can run applications like Express in the background, even when you’re not logged in.
Unfortunately, for a variety of security and performance reasons, this makes running Node.js applications on a shared server like GoDaddy a bad idea. That doesn’t mean, however, that you have to set up and run your own cloud server . Platform as a Service, or PAAS, providers like Heroku, Appfog, and Zeit have many options for running custom Node applications without all the tedium of server management. With most of these providers, all you need to worry about is the app and the data.
You probably won’t be able to host a large-scale Node app for the $9.99 a month or so that shared hosting typically runs … but hey, if your app’s big enough to be eating significant money in server costs, then you should have an audience that’s plenty large enough to generate enough revenue to cover them!