nodejs错误:spawn ENOENT

我是nodejs的新手,我试图运行它:

我获得:

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) 

我该如何解决?


可能是这个代码里面的问题是:

 /** */ /*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; }; 

开始后,我去localhost:8082,它崩溃了! 就这样。 我很抱歉,有可能把这个小小的信息给你帮上忙。

在我的Windows 7机器上更新了很多程序之后,我得到了同样的错误。 幸运的是,我记得我删除了git,并使用更新的版本和不同的安装选项重新安装。 区别在于在“调整PATH环境”设置中select第三个选项(“从Windows命令提示符使用Git和可选的Unix工具”)。

在将node.js更新为新版本(实际上是0.10.31)之后,问题仍然存在。 所以我决定再次删除git,et'voila,套接字服务器再次工作。 现在我将再次使用缺省选项安装git,不要修改PATH环境variables。

所以问题来自于通过PATHvariables访问的unix工具,比如由MinGW,Git或Cygwin安装(可能 – 未经testing)。

  • 阅读自述
  • 尝试使用npm install pvsio-web -g或者(如果你的/ usr / local /目录由root拥有) sudo npm install pvsio-web -g
  • 你应该在你的电脑上安装pvs和pvsio
  • 你应该确保pvsio作为path上的一个命令可用
  1. 如果您不想全局安装pvsio,则可以从node_modules / .bin中运行它
  2. 你应该注册到产卵的“错误”事件,参见: NodeJS:throw er; //使用child_process spawn方法时,未处理的“错误”事件(events.js:72)