【发布时间】:2016-10-02 11:58:10
【问题描述】:
我正在使用execSync 运行soffice 命令。我遇到的问题是当抛出错误execSync 只是将错误记录到控制台,无法捕获它。我尝试使用 try catch 语句,但它仍然只是将错误记录到控制台。
function convertToPdf(filepath, destpath) {
var cmd = 'sofice command';
try {
var res = execSync(cmd, { encoding: 'utf8' });
} catch (e) {
console.log("Errors:", e);
}
console.log("res:", res);
}
convertToPdf("test.docx");
我运行它并取回它:
Error: source file could not be loaded
res:
请注意,我的 catch 语句从未被记录,即使明确抛出了错误,但另一个 Error: 消息会自动记录,因为我没有记录。
【问题讨论】:
-
The manual 说“它会抛出”,但仅在某些情况下:“如果进程超时,或者退出代码非零”。你有这些吗?
-
@ÁlvaroGonzález 我怎么知道我什至不能检查退出代码。它所做的只是登录以筛选我在上面发布的内容
-
我不是 Node 专家,但文档建议(进程超时分开):如果它不抛出错误,则为零,否则为非零(您可以从错误)。由于来自 LibreOffice 的 soffice(假设你是这个意思)是一个 GUI 程序,我不会对它在错误时不返回非零代码感到惊讶。这在大多数 shell 中应该很容易测试。如果你告诉我们你有什么 shell,我们可能会告诉你如何从控制台读取返回值。如果你告诉我们确切的
soffice命令和你得到的错误,我们甚至可以自己重现它。 -
你是如何解决@Rodrigo 的问题的?
标签: javascript node.js exec