node.js child_process不起作用

时间:2016-10-03 10:39:52

标签: node.js exec pm2

目前我正在开发node.js中的自动docx2pdf转换器。我正在使用unoconv。 当我在shell中运行此命令时效果非常好:

unoconv -f pdf "/opt/bitnami/apache2/htdocs/123.docx"

但是我想从node.js调用这个命令,有一些模块(unoconv包装器),但这些都不适用于我。所以我只想从上面调用这个命令。我尝试了node.js shell command execution的所有解决方案,但它们不起作用。
为什么这段代码片段能为我工作?

                        function run_cmd(cmd, args, callBack) {
                        var spawn = require('child_process').spawn;
                        var child = spawn(cmd, args);
                        var resp = "";

                        child.stdout.on('data', function(buffer) {
                            resp += buffer.toString()
                        });
                        child.stdout.on('end', function() {
                            callBack(resp)
                        });
                    } // ()
                    run_cmd("unoconv", ['-f pdf "/opt/bitnami/apache2/htdocs/123.docx"'], function(text) {
                        console.log(text)
                    });

即使我从pm2运行脚本作为服务或直接使用node命令,它也不会产生输出。我希望你能帮帮我! 提前致谢

1 个答案:

答案 0 :(得分:0)

我怀疑你使用的命令只是创建了一个新的PDF文件和DOCX文件。如果你想在节点中拥有它,你可能应该尝试--stdout flag。

像这样:

  

unoconv -f pdf --stdout" /opt/bitnami/apache2/htdocs/123.docx"