2014-12-04 179 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'。