Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js子进程不工作_Node.js_Exec_Pm2 - Fatal编程技术网

node.js子进程不工作

node.js子进程不工作,node.js,exec,pm2,Node.js,Exec,Pm2,目前,我正在node.js中开发一个自动docx2pdf转换器。我正在使用优尼科。 当我在中的shell中运行此命令时,效果非常好: unoconv -f pdf "/opt/bitnami/apache2/htdocs/123.docx" 但是我想从node.js调用这个命令,有一些模块(unoconv包装器),但是这些都不适合我。所以我只想从上面调用这个命令。我尝试了来自的所有解决方案,但都不起作用。 为什么这个代码片段对我有用 functi

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

unoconv -f pdf "/opt/bitnami/apache2/htdocs/123.docx"
但是我想从node.js调用这个命令,有一些模块(unoconv包装器),但是这些都不适合我。所以我只想从上面调用这个命令。我尝试了来自的所有解决方案,但都不起作用。
为什么这个代码片段对我有用

                        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命令运行,它也不会生成输出。我希望你能帮助我!
提前感谢

我怀疑您使用的命令只是在创建DOCX文件的同时创建了一个新的PDF文件。如果您想让它位于节点中,您可能应该尝试
--stdout
标志

像这样:

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


我怀疑您使用的命令只是创建了一个新的PDF文件和DOCX文件。如果您想让它位于节点中,您可能应该尝试
--stdout
标志

像这样:

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


我建议您也听一下child.stderr.on(“数据”…和child.on(“关闭”)…看看您是否能找到任何可能出错的线索。@Hampus ok,谢谢,我遇到了一个新错误:致命的Python错误:Py_Initialize:无法获取tImportError:没有名为“encodings”的模块。但是,为什么只有在从节点而不是从命令行调用命令时才会出现这种情况?请尝试打印在命令行上运行的Python版本使用
python--version
,然后从节点内执行相同的操作。@Hampus python version命令行:2.7.11和from node也是python 2.7.11。-与python3相同。你有其他想法吗?我猜,但是从节点上下文使用python路径时,可能会出现问题,因此它找不到编码模块。我是建议您也收听
child.stderr.on(“数据”…
child.on(“关闭”)…
看看您是否能找到任何可能出错的线索。@Hampus ok,谢谢,我遇到了一个新错误:致命的Python错误:Py_Initialize:无法获取tImportError:没有名为“encodings”的模块。但是,为什么只有在从节点而不是从命令行调用命令时才会出现这种情况?请尝试打印在命令行上运行的Python版本使用
python--version
,然后从节点内执行相同的操作。@Hampus python version命令行:2.7.11和from node也是python 2.7.11。-与python3相同| |你有其他想法吗?我猜,但是从节点上下文使用python路径时可能会有问题,因此它找不到编码模块。我不知道我尝试了这个标志,但没有改变任何东西。仍然是致命的Python错误。我尝试了这个标志,但没有改变任何东西。仍然是致命的Python错误