Currently there are a plethora of ways to accomplish this.
The clear winner in the space of packaging a node + html5 app, is currently Electron (used by Atom, VSCode, Slack, Discord, etc).
You can also use any other language packaged as an app (using tools for those languages/stacks), and check for a node installation, launch the "server" script with node, then launch the default browser (or some web view component, by some other means), finally set location to the node service. This is a very light weight and efficient method, however not as well integrated with the OS as a solution like Electron.
The primary competitor to Electron here, is NW.js.
As far as I can tell, the main feature that NW.js has that Electron does not (yet) is compilation/obfuscation. While Electron makes auto updates easy.
https://electron.atom.io/
https://nwjs.io/