如何在 docker 容器中的 nodejs 应用程序 运行 中使用 child_process
How to use child_process inside nodejs application running inside docker container
我尝试在 docker 容器中 运行 一个 nodejs 应用程序。一旦我进入 docker 容器并执行应用程序,一切都如预期。但是,一旦我使用 docker exec 将命令发送到容器。错误发生为 TypeError: Object # has no method 'execSync'。如何在 docker 容器中的节点应用程序中使用 child_prcess?
root@17dbb03697b0:/apps# cat test.js
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim();
console.log(aaa);
root@17dbb03697b0:/apps# node test.js
aaaaaaaaa
root@17dbb03697b0:/apps#
user@ip-172-1-1-121:~/$ 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
user@ip-172-1-1-121:~/$ docker exec containername bash -c "cd /apps/;cat test.js"
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim();
console.log(aaa);
execSync()
是在 v0.11.12 release 中引入的。
检查您的节点版本。
docker exec containername bash -c "node -v"
我尝试在 docker 容器中 运行 一个 nodejs 应用程序。一旦我进入 docker 容器并执行应用程序,一切都如预期。但是,一旦我使用 docker exec 将命令发送到容器。错误发生为 TypeError: Object # has no method 'execSync'。如何在 docker 容器中的节点应用程序中使用 child_prcess?
root@17dbb03697b0:/apps# cat test.js
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim();
console.log(aaa);
root@17dbb03697b0:/apps# node test.js
aaaaaaaaa
root@17dbb03697b0:/apps#
user@ip-172-1-1-121:~/$ 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
user@ip-172-1-1-121:~/$ docker exec containername bash -c "cd /apps/;cat test.js"
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim();
console.log(aaa);
execSync()
是在 v0.11.12 release 中引入的。
检查您的节点版本。
docker exec containername bash -c "node -v"