Node.js错误。不能理解

时间:2013-09-20 11:49:52

标签: node.js

运行简单节点程序时出现此错误:

/home/ubuntu/parent.js:4
    throw error;
      ^
Error: Command failed: /bin/sh: 1: node: not found

at ChildProcess.exithandler (child_process.js:637:15)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:735:16)
at Socket.<anonymous> (child_process.js:948:11)
at Socket.EventEmitter.emit (events.js:95:17)
at Pipe.close (net.js:466:12)

parent.js:

 var exec = require('child_process').exec; 
 exec('node child.js',{env: {number: 123}},function(error,stdout,stderr){ 
   if(error){ throw error; } console.log('stdout:\t',stdout); 
   console.log('stderr:\t',stderr); 
 });

child.js:

var number = process.env.number; 
console.log(typeof(number));

2 个答案:

答案 0 :(得分:3)

当您通过这些选项时:

{env: {number: 123}}

覆盖所有环境变量,因此它不会继承您当前的变量。这包括PATH,它是查找node所必需的。除了你想要的那个之外,你还需要复制当前的环境变量:

env = {};
for(key in process.env) {
  env[key] = process.env[key];
}
env.number = 123;

然后您使用此env作为env选项:

{env: env}

答案 1 :(得分:0)

因此,您尝试运行多个节点实例。对我来说,这看起来并不合适。您可以require('child.js')或更好地构建应用程序。

如果你真的想这样做,你需要了解路径。父节点应用程序作为用户运行,一旦由该用户运行,它似乎没有到原始节点文件的路径。尝试执行export PATH=$PATH:/usr/local/bin所在的/usr/local/bin/node命令。如果节点在/bin中,则使用该节点。找到节点可执行文件的位置,并将该bin目录添加到路径中。这必须在节点作为。

运行的用户上完成

在节点中,您可以通过

查看可用的PATH
exec('echo $PATH')

它要检查的每个目录都用冒号

分隔

最好在节点之外做这个,但对我来说这整个情况似乎应该从第一个概念中重新考虑。