I think the crontab way is pretty clean. It allows you to associate processes with users (even root if you need), and is an obvious place to look if you need to find out how a process started, and by whom. In 6 months, you won't remember where it is, and you'll go crazy searching for it.
Putting it in startup scripts down in the heart of the shell launch process works, but is not that easy to find or keep track of.
The other way would be to start it as a system service, this is also pretty easy to do - you just need to have a launcher script to start/stop/restart the service. This got a whole lot easier with systemd:
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/pi/time-zone-server/time-zone-service.js:3:15)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
It's been a while so my memory isn't great, but I think once you get express installed you'll get another missing dependency for something called "time". Pretty sure you just need to make a directory ~/time-zone-server/node_modules/time and then, while in that directory, say: $ npm install time
Edit: Corrected directory from "modules" to "node_modules"
Look into it later when the dust is clearing off the crater.