javascript - nodejs 脚本中的 child_process.spawn ENOENT 问题

标签 javascript node.js spawn

我正在尝试在 Node 脚本中运行以下命令:

/bin/sh -c '/Users/edwardthompson/IdeaProjects/evidentia4/evidentia4/package/macosx/e/wkhtmltopdf --page-size "letter" --footer-center "[page] of [topage]" --footer-left "Prepared Jul 7, 2019 by Edward A Thompson" --footer-right "Evidentia(c) 2012-2017" --footer-font-size "10" --footer-font-name "Times" --print-media-type /var/folders/45/2rx5vf4j47jf4hx5157q4q800000gn/T/ResearchSummaryReport-201967122421963.html /var/folders/45/2rx5vf4j47jf4hx5157q4q800000gn/T/ResearchSummaryReport-201967122421964.pdf'

从命令行运行,它工作正常,但我必须将传递给/bin/sh -c 的所有内容加上引号

当我在 Node 脚本中执行相同的操作时:

child = child_process.spawn('/bin/sh -c', ["'" + args.join(' ') + "'"], {stdio: 'inherit'});

我得到:

Message:
Uncaught exception: Error: spawn /bin/sh -c ENOENT
Stack:
error properties: Object({ errno: 'ENOENT', code: 'ENOENT', syscall: 'spawn /bin/sh -c', path: '/bin/sh -c', spawnargs: [ ''/Users/edwardthompson/IdeaProjects/evidentia4/evidentia4/package/macosx/e/wkhtmltopdf --page-size "letter" --footer-center "[page] of [topage]" --footer-left "Prepared Jul 7, 2019 by Edward A Thompson" --footer-right "Evidentia(c) 2012-2017" --footer-font-size "10" --footer-font-name "Times" --print-media-type /var/folders/45/2rx5vf4j47jf4hx5157q4q800000gn/T/ResearchSummaryReport-20196712254722.html /var/folders/45/2rx5vf4j47jf4hx5157q4q800000gn/T/ResearchSummaryReport-20196712254722.pdf'' ] })
Error: spawn /bin/sh -c ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:74:11)

无法弄清楚这个...

最佳答案

child_process.spawn 正在查找路径为“/bin/sh -c”的文件,但该文件不存在。您应该传递 -c 作为参数。

试试这个:

child = child_process.spawn('/bin/sh', ["-c","'" + args.join(' ') + "'"], {stdio: 'inherit'});

关于javascript - nodejs 脚本中的 child_process.spawn ENOENT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924115/

相关文章:

javascript - 在 d3 中堆叠一个矩阵而不重新映射到 json

node.js - 为博世物联网套件运行 Vorto Dashboard 时出错

node.js - 如何在 aws lambda 函数中使用 Socket.io

javascript - Node.js 使用 spawn 两个子进程,那么两个子进程如何相互交换?

Java Runtime.exec() 不支持 Linux 别名

javascript - fatal error : Uncaught Error: Call to undefined function loginRelocate() Javascript

javascript - ionic 3/angular 4 - 多个 ng 模型的 ionic 范围单一功能

javascript - 使用双缓冲改进 Html5 Canvas ?

node.js - 使用自己的控制台窗口生成新的子进程

node.js - Node ,postgres pg-promise : Leaking active handles ONLY in azure webapp container