作者jacobcan118 (jacobcan118)
看板Linux
標題[問題] 在docker container裡用child_process.execSync
時間Sat Aug 20 05:23:03 2016
請問各位我有一個docker container裡裝node跑一個小小的測試JS檔, 當我進入docker container跑都沒問題, 但是如果用docker exec的command卻會發生錯誤
我猜是在docker container外部執行無法取的子進程. 有人有任何經驗如何解決嗎
我在docker container裡測試的腳本和結果
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#
在docker container外測試的結果
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);
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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 209.90.32.81
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1471641785.A.A21.html
推 kenduest: nodejs 確認至少是 0.12 版本嗎? 08/21 13:05
推 kenduest: exec 時候改成傳列出版本參數看看 08/21 13:07
→ jacobcan118: 感謝, 發現是我裝nvm node時路徑沒有map到/usr/bin/ 08/25 04:07
→ jacobcan118: /usr/bin/node 加上soft link 後就可以了 08/25 04:57