2013-08-22 99 views
1

我非常新手用的NodeJS,我试图运行它:错误的NodeJS:产卵ENOENT

我获得:

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和崩溃! 就是这样。 我很抱歉,有可能抛出这些小信息,你无法帮助我。

+4

向我们展示代码。你在哪个平台上运行节点? – badsyntax

+1

您的项目中是否存在名为package.json的文件? –

+1

是有: “{ \t ”名称“:” pvsio幅材 “ \t ”作者“: ”帕特里克Oladimeji <[email protected]>“, \t ”描述“:” JavaScript库连接到使用的WebSockets与pvsio过程沟通 “ \t ”版本“: ”0.0.13“, \t ”preferGlobal“: ”真“, \t ”主“:” ./ pvssocketserver.js”, \t “bin” 的: “./ pvssocketserver.js”, \t “依赖”:{ \t \t “WS”: “0.4.x”, \t \t“express”:“3。X” \t}, \t “存储库”:{ \t \t “类型”: “GIT中”, \t \t “URL”: “https://github.com/thehogfather/pvsio-web” \t} \t “许可证”: “麻省理工学院”, \t “引擎”:{ \t \t “节点”: “> = 0.8” \t}} ” – Edge7

回答

0
  • readme
  • 尝试安装此使用npm install pvsio-web -g或者(如果你的/ usr/local /目录的所有者是root)sudo npm install pvsio-web -g
  • 你应该安装PVS和pvsio您的计算机上
  • 你应该确保pvsio可作为命令的路径
1

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

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

所以问题来自unix工具可以通过PATH变量访问,比如MinGW,Git或Cygwin安装(可能 - 未经测试)。