[問題] 在docker container裡用child_process.execSync

看板Linux作者 (jacobcan118)時間9年前 (2016/08/20 05:23), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
請問各位我有一個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

08/21 13:05, , 1F
nodejs 確認至少是 0.12 版本嗎?
08/21 13:05, 1F

08/21 13:07, , 2F
exec 時候改成傳列出版本參數看看
08/21 13:07, 2F

08/25 04:07, , 3F
感謝, 發現是我裝nvm node時路徑沒有map到/usr/bin/
08/25 04:07, 3F

08/25 04:57, , 4F
/usr/bin/node 加上soft link 後就可以了
08/25 04:57, 4F
文章代碼(AID): #1NjtYveX (Linux)
文章代碼(AID): #1NjtYveX (Linux)