So for February I was plaining to expand my catalog on node.js related content by getting into writing a bunch of demos on core node.js modules, rather than what I have been doing for the most part before hand which is writing about npm packages. Looking over what I have so far, I never got around to writing about the child_process module yet, so I thought I would give that one a go.
This module allows me to start a separate process on the command line. I can run any command that might be in the operating system environment, including node, which makes it one of two modules of interest when doing something involving running more than one instance of node on the operating system. The other module of interest being the cluster module.
This module is a little involved so I will likely be writing a few posts on this module alone. So in this post I will just be providing a simple example of using the spawn method of the child_process module to launch another *.js file with node.
Because this demo involves launching a script with another script, I will need to files, a test.js, and the usual index.js.
With this demo when I call index.js from the command line, I get the message that was logged in test.js.
Spawn is an alternative to another method in the child_process module called exec. Generally I like to use spawn over exec because of some potential security concerns, but they both do the same thing, launch a process.
So that basic example might help with the basic idea of using the spawn method to launch a command from the command line of the operating system that is being used. However when running a command things do not aways go as expected, sometimes there is an error of sorts that might happen.
For example say you run a git status command in a folder that is not a git folder, at the current working directory from which you called it or any parent folder for that matter as well. When that happens it will of course not work, because in order to know the status of a git folder you have to of course have a git folder to begin with.
So then there is the stderr property of a spawn instance that can be used in the same way as the stdout property only this is what will fire when there is an error of some sort.