微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅当将Inkscape作为子过程调用时,“无效动词”错误

如何解决仅当将Inkscape作为子过程调用时,“无效动词”错误

当我在命令行中调用以下命令时,它就像一个超级按钮:

inkscape --with-gui --batch-process --export-filename=- \
    --actions="select-all;ObjectToPath" \
    /full/path/to/example.svg

但是当我打开Node.js并在子进程中进行相同的调用时,就像这样:

const cp = require("child_process");
var child = cp.spawn(
    "/usr/bin/inkscape",[
        "--with-gui","--batch-process","--export-filename=-",'--actions="select-all;ObjectToPath"',"/full/path/to/example.svg",],{
        cwd: process.cwd(),detached: true,stdio: "inherit",}
);

我收到以下错误

Unable to find: "select-all
verbs_action: Invalid verb: "select-all
Unable to find: ObjectToPath"
verbs_action: Invalid verb: ObjectToPath"

文件返回不变(打印到stdout)。任何想法为什么在将Inkscape作为子进程运行但未直接从终端调用它时为何找不到动词?我在使用最新Inkscape(1.0.1 + r73)的ubuntu(20.04)和OSX上遇到了相同的错误

解决方法

在将cp.spawn与一系列参数一起使用时,不需要像在shell那样在内部引用"select-all;ObjectToPath"。 (在外壳程序中,引号阻止外壳程序将命令行标记为两行。由于相同的机制(或缺乏这种机制),试图使用诸如$$之类的shell变量或诸如{{1}之类的环境变量}在您使用$PATH时会失败,因为没有任何内容可以解析。)

我能想象

cp.spawn

会帮你的忙。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。