2013-09-20 3 views
0

я получаю эту ошибку во время выполнения простой программы узла:Ошибка 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)); 
+0

Какой команды вы работаете? –

+0

У меня есть два файла parent.js и child.js. Я запускаю узел parent.js – user2799015

+0

, вы можете показать содержимое файлов и проверить правильность установки узла. –

ответ

0

Так , у вас есть несколько экземпляров узлов, которые вы пытаетесь запустить. Для меня это выглядит не так. Вы можете сделать require('child.js') или создать свое приложение лучше.

Если вы действительно хотите это сделать, вам нужно понять пути. Приложение родительского узла работает как пользователь, и после его запуска он не имеет пути к исходному файлу узла. попробуйте выполнить команду export PATH=$PATH:/usr/local/bin, где существует /usr/local/bin/node. Если узел находится в /bin, используйте его. Найдите, где находится исполняемый файл узла, и добавьте этот каталог bin в путь. Это должно быть сделано для пользователя, который работает с узлом.

В узле, вы можете быть в состоянии увидеть, что PATH можно, выполнив

exec('echo $PATH') 

каждый каталог это проверка отделяется двоеточием

Было бы предпочтительнее, чтобы сделать это вне узла, но мне кажется, что вся эта ситуация должна быть переосмыслена из первых понятий.

3

Когда вы передаете эти варианты:

{env: {number: 123}} 

вы перезапись все переменные окружения, поэтому он не наследует свои текущие. Это включает в себя PATH, для которого требуется найти node. Вам нужно скопировать текущие переменные окружения в дополнении к тому, который вы хотите:

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

А затем использовать этот env в качестве env варианта:

{env: env} 
Смежные вопросы