Reputation: 681
I am very newbie with nodejs, I am trying to run it:
I obtain:
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)
How Can I solve?
May be the problem is inside this 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 = "<PVSio>",
wordsIgnored = ["", "==>", 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 '==>'
//and any blank lines
output = output.concat(lines.filter(function (d) {
return wordsIgnored.indexOf(d) < 0;
}));
if (processReady && lastLine.indexOf(readyString) > -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) > -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;
};
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.
Upvotes: 2
Views: 11913
Reputation: 1111
A very simple cause of this error: you're installing an application on a new server and the code is trying to run a linux CLI program that hasn't yet been installed on that particular server.
In my case, the code was spawning a process running inotify
. So going to the linux command line and running
apt-get install inotify-tools
resolved the error.
Upvotes: 0
Reputation: 51
I got the same error, after updating a lot of programs on my Windows 7 machine. Luckily I could remember that I removed git and installed it again using a newer version and different installation options. The difference was to select the 3rd option in "Adjusting PATH environment" settings ("Use Git and optional Unix tools from the Windows Command Prompt").
After updating node.js to a newer version (actually 0.10.31) the problem still exists. So I deciced to remove git again, and et'voila, socket server is working again. Now I will install git again with the default options, which do not to modify the PATH environment variable.
So the problem comes from unix tools accessible through PATH variable such as installed by MinGW, Git or Cygwin (probably - not tested).
Upvotes: 1
Reputation: 1871
Upvotes: 0
Reputation: 10661
npm install pvsio-web -g
or (if your /usr/local/ directory is owned by root) sudo npm install pvsio-web -g
Upvotes: 0