我看到了一个嵌入了Ruby的node.js应用程序。
以下代码生成一个PDF文件,使用gemma虾将值从node.js传递到Ruby。 Node程序在Centos上运行。
问题是当我使用root手动启动程序时
sudo node server.js
程序执行并正常工作。当cron
使用以下命令执行该程序时,该程序将执行并正常工作。使用以下命令将其作为cron任务执行时
reboot cd /var/www/html/myapp/ && sudo node server.js
未执行Ruby部分。为什么,如何解决?
Node.js代码:
var command = 'ruby report.rb "' + RagioneSociale + '" "' + NomeCantiere + '" "' + Note + '" "' + Nome + '" "' + Cognome + '" "' + Telefono + '" "' + Email + '" "' + Filiale + '" "' + NumeroRapporto + '" "' + Indirizzo + '" "' + Cap + '" "' + Citta + '" "' + Provincia + '" ';
...
//Genero il rapportino e ritorno il valore
result = await new Promise((resolve, reject) => {
exec(command, function (err, stdout, stderr) {
if (stderr) {
ManageError.SendError("Errore generazione PDF con ruby" + err);
reject(false);
} else if (stderr) {
ManageError.SendError("Errore generazione PDF con ruby" + err);
reject(false);
} else {
//Eliminazione del file temporaneo
fs.unlink(tempfilename, function (err) {
if (err) {
ManageError.SendError("Errore eliminazione file txt temporaneo" + err);
}
});
//Codifica PDF in Base64 rapportino
base64.encode('rapportino.pdf', function (err, base64String) {
resolve(base64String);
});
}
});
});