【问题标题】:How to use child_process inside nodejs application running inside docker container如何在docker容器内运行的nodejs应用程序中使用child_process
【发布时间】:2016-12-27 03:28:50
【问题描述】:

我尝试在 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);

【问题讨论】:

  • 我刚刚用docker run --rm -ti node:latest node 测试了这个,require('child_process') 明确显示execSync 在那里。

标签: node.js docker child-process docker-container


【解决方案1】:

execSync() 是在v0.11.12 release 中引入的。

检查您的节点版本。

docker exec containername bash -c "node -v"

【讨论】:

  • 原来我用的是nvm install node v4.2.3,经过检查,/usr/bin/node 是旧版本。我所做的是建立一个软链接,现在很好。 user@ip-172.0.0.1:$ docker exec copilot bash -c "/usr/bin/nodejs -v" v0.10.25 user@ip-172.0.0.1:$ docker exec copilot bash -c "哪个节点" /usr/ bin/node user@ip-172.0.0.1:$ docker exec copilot bash -c "node -v" v4.2.3
猜你喜欢
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多