2016-08-19 2 views
0

Я пытаюсь запустить одно приложение nodejs внутри контейнера докера. Все, как и ожидалось, когда я попаду в контейнер докеров и запустил приложение. Однако, когда я использую docker exec для отправки команды в контейнер. Ошибка возникла как TypeError: Объект # не имеет метода 'execSync'. Как я могу использовать child_prcess в моем приложении-узле из контейнера докеров?Как использовать child_process внутри приложения nodejs, запущенного внутри контейнера докера

[email protected]:/apps# cat test.js 
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim(); 
console.log(aaa); 
[email protected]:/apps# node test.js 
aaaaaaaaa 
[email protected]:/apps# 

[email protected]:~/$ docker exec containername bash -c "cd /apps;node test.js" 

/apps/test.js:1 
module, __filename, __dirname) { var aaa = require('child_process').execSync(' 
                    ^
TypeError: Object #<Object> has no method 'execSync' 
    at Object.<anonymous> (/apps/test.js:1:98) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 
[email protected]:~/$ docker exec containername bash -c "cd /apps/;cat test.js" 
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim(); 
console.log(aaa); 
+0

Я только что проверил это с помощью 'docker run -rm -ti node: latest node' и' require ('child_process') 'явно показывает, что' execSync' есть. –

ответ

0

execSync() был введен в v0.11.12 release.

Проверьте версию своего узла.

+0

Оказывается, я использую узел установки nvm v4.2.3, после проверки,/usr/bin/node является старой версией. то, что я сделал, делает мягкую ссылку, и сейчас все в порядке. [email protected]: $ docker exec copilot bash -c "/ usr/bin/nodejs -v" v0.10.25 [email protected]: $ docker exec copilot bash -c "какой узел" /usr/bin/node [email protected]: $ docker exec copilot bash -c "node -v" v4.2.3 – jacobcan118

Смежные вопросы