2014-12-04 304 views
1

如果我只是正常運行應用程序,我可以產生一個gpg子進程並正常解密一個文件。如何從nodejs中的守護進程產生gpg子進程?

/app.js

var spawn = require('child_process').spawn; 

function decrypt() { 
    var gpg = spawn('gpg', ['--no-use-agent', '--passphrase', 'My Passphrase', './test.pdf.asc']); 

    gpg.on('close', function (code) { 
     console.log(code); // code == 0 
    }); 
} 

decrypt(); 

運行app.js作爲普通的過程,可能解密文件

node app.js 

然而,當我嘗試運行app.js如使用PM2守護,暴發戶,等等。我得到了錯誤代碼(2),無法解密文件 運行app.js AA守護

pm2 start app.js 
+0

既然你傳遞了'/ test.pdf.asc',那麼這個文件實際上是在文件系統的根目錄嗎? – loganfsmyth 2014-12-04 20:50:15

+0

它是一個錯字「./test.pdf.acs」 – LonelyPlanet 2014-12-04 21:14:22

+0

重要的錯字,該錯誤可能是您的問題的原因。 – loganfsmyth 2014-12-04 22:09:17

回答

1

這不是Node.js問題。它與gnupg工具有關。爲了運行gpg從代碼中調用它或作爲cron作業,你需要一個標誌'--no-tty'。