How to determine The Node versions available on Azure App Service

I may have mentioned this before, but Azure App Service is an awesome service for hosting your website. It’s got tons of features to support devops, production deployments, testing and monitoring tasks. One of the things I struggled with was node deployments. You should specify the version of node that you want to use in your package.json file in the engines section, like this:

"engines": {
    "node": ">= 4.2.3 <= 4.3.0",
    "npm": ">= 3.3.0"

This is great, but how do you know what versions of node and npm are acceptable together?

It turns out that this is relatively easy. First of all, create yourself an Azure App Service Web App (or Mobile App, or API App – they are all the same thing). Deploy a random node/express app to the service using your favorite technique (mine is using continuous deployment from GitHub). Now, let’s get to know Kudu


Kudu is a nice web-based console for accessing the guts of your site. It contains a bunch of useful information. To get there, go to your Tools blade and then click on Kudu, then Go:

Screen Shot 2016-03-03 at 8.13.48 PM

You can also go directly to instead. As I’ve described in the past, it’s well worth getting to know Kudu – it’s one of those hidden gems in the Azure system that really assists in problem solving. Back to the problem at hand – I have a node site, but what versions am I allowed to put in the package.json file? Simple – click on Runtime versions on the front page.

Admittedly, this isn’t the friendliest display. A lot of Kudu interacts with a REST endpoint behind the scenes and displays the result in the most raw version possible. This is good – it gives you access to the maximal information possible, but it’s also bad – it tends to be hard to read. Fortunately, I’ve prepared for this. I’ve already installed JSON Viewer to assist with pretty-printing JSON files when in Chrome – my preferred browser. There are a number of plug-ins that do this, not only in Chrome, but Firefox and standalone. You can use whatever you want.

Now you can just cut-and-paste the version you want into the engines section of your package.json. Alternatively, you can use a range to ensure that you pick up the latest version. For example, my standard engines entry contains the following:

"engines": {
    "node": ">=5.7.0 <5.8.0",
    "npm": ">=3.3.0"

With this code, and matching it to the list, I know I’ll be running node.js v5.7.0 and npm v3.6.0 on the service.

Another thing to like about Azure App Service – they are really responsive in keeping up to date with the Node versions. Node is an extremely active community and multiple releases come out every week, it seems.

(Full disclaimer – I work for Microsoft in Azure App Service and Mobile Apps – I don’t maintain the node environment though, and my thoughts are not those of my employer nor the group that does maintain the node environments).