title: nodejs error: spawn ENOENT
body: <p>I am very newbie with nodejs, I am trying to run it:</p>
  
  <p>I obtain:</p>
  
  <pre><code>events.js:72
          throw er; // Unhandled 'error' event
                ^
  Error: spawn ENOENT
      at errnoException (child_process.js:980:11)
      at Process.ChildProcess._handle.onexit (child_process.js:771:34)
  </code></pre>
  
  <p>How Can I  solve?</p>
  
  <hr>
  
  <p>May be the problem is inside this code:</p>
  
  <pre><code>/**
  
   */
  /*jslint vars: true, plusplus: true, devel: true, nomen: true, indent: 4, maxerr: 50 */
  /*global define, require, module, process */
  
  var childprocess = require("child_process"),
      util = require("util"),
      fs = require("fs");
  var procWrapper = require("./processwrapper");
  var spawn = childprocess.spawn;
  module.exports = function () {
      "use strict";
      var pvs = procWrapper();
      var o                                   = {},
          output                              = [],
          readyString                         = "&lt;PVSio&gt;",
          wordsIgnored                        = ["", "==&gt;", readyString],
          restarting                          = false,
          sourceCode,
          filename,
          processReady                        = false,
          pvsio,
          workspaceDir                        = process.cwd() + "/public/";
      /**
       * get or set the workspace dir. this is the base directory of the pvs source code
       * @param {String} dir
       * @return {String} the current workspace directory
       */
      o.workspaceDir = function (dir) {
          if (dir) {util.log("OK");
  
              dir = dir.substr(-1) !== "/" ? (dir + "/") : dir;
              workspaceDir = dir;
      util.log("OOO");
              return o;
          }
  util.log("IIII");
          return workspaceDir;
      };
  
      /**
       * starts the pvs process with the given sourcefile 
       * @param {String} filename source file to load with pvsio
       * @param {function({type:string, data:array})} callback function to call when any data is received  in the stdout
       * @param {function} callback to call when processis ready
       */
      o.start = function (file, callback, processReadyCallback) {
          filename = o.workspaceDir() + file;
          function onDataReceived(data) {
              var lines = data.split("\n").map(function (d) {
                  return d.trim();
              });
              var lastLine = lines[lines.length - 1];
              //copy lines into the output list ignoring the exit string, the startoutput string '==&gt;'
              //and any blank lines
              output = output.concat(lines.filter(function (d) {
                  return wordsIgnored.indexOf(d) &lt; 0;
              }));
  
              if (processReady &amp;&amp; lastLine.indexOf(readyString) &gt; -1) {
                  var outString = output.join("").replace(/,/g, ", ").replace(/\s+\:\=/g, ":=").replace(/\:\=\s+/g, ":=");
                  //This is a hack to remove garbage collection messages from the output string before we send to the client
                  var croppedString = outString.substring(0, outString.indexOf("(#"));
                  outString = outString.substring(outString.indexOf("(#"));
                  util.log(outString);
                  callback({type: "pvsoutput", data: [outString]});
                  //clear the output
                  output  = [];
              } else if (lastLine.indexOf(readyString) &gt; -1) {
                  //last line of the output is the ready string
                  processReadyCallback({type: "processReady", data: output});
                  processReady = true;
                  output = [];
              }
          }
  
          function onProcessExited(code) {
              processReady = false;
              var msg = "pvsio process exited with code " + code;
              util.log(msg);
              callback({type: "processExited", data: msg, code: code});
          }
  
          pvs.start({processName: "pvsio", args: [filename],
              onDataReceived: onDataReceived,
              onProcessExited: onProcessExited});
  
          util.log("pvsio process started with file " + filename + "; process working directory is :" + o.workspaceDir());
  util.log("OK");
  
          return o;
      };
  
      /**
       * sends a command to the pvsio process. This method returns immediately. The result of the command
       * will be by the 'on data' event of the process standard output stream
       * @param {string} command the command to send to pvsio
       */
      o.sendCommand = function (command) {
          util.log("sending command " + command + " to process");
          pvs.sendCommand(command);
          return o;
      };
  
      /**
       * gets the source code pvs io is executing
       * @param {string} path the path the to file whose content is to be fetched
       * @param {function({type:string, data, message:string})} callback callback to execute when sourcecode has been loaded
       * @returns {this}
       */
      o.readFile = function (path, callback) {
          pvs.readFile(path, callback);
          return o;
      };
  
      /**
       * writes  the file passed to the disk
       * @param {fileName:string, fileContent: string} data Object representing the sourcecode to save
       * @param {function ({type: string, data: {fileName: string}})} callback function to invoke when the file has been saved
       */
      o.writeFile = function (path, data, callback) {
          pvs.writeFile(path, data, callback);
          return o;
      };
  
  
      /**
       * closes the pvsio process
       * @param {string} signal The signal to send to the kill process. Default is 'SIGTERM'
       */
      o.close = function (signal) {
          signal = signal || 'SIGTERM';
          pvs.kill(signal);
          return o;
      };
      return o;
  };
  </code></pre>
  
  <p>After have started it , I go to localhost:8082 and it crashes!
  That's all.
  I' am sorry, it's possible that throw this little information you can't help me. </p>