我正在将一个CLI库从Ruby移植到Node.js.在我的代码中,我在必要时执行几个第三方二进制文件.我不确定在Node中如何最好地完成此任务.
这是Ruby中的一个示例,我将PrinceXML称为将文件转换为PDF:
cmd = system("prince -v builds/pdf/book.html -o builds/pdf/book.pdf")
Run Code Online (Sandbox Code Playgroud)
Node中的等效代码是什么?
我仍然试图掌握如何运行linux或windows shell命令以及在node.js中捕获输出的更好点; 最终,我想做这样的事......
//pseudocode
output = run_command(cmd, args)
Run Code Online (Sandbox Code Playgroud)
重要的是output必须可用于全局范围的变量(或对象).我尝试了以下功能,但出于某种原因,我被undefined打印到控制台......
function run_cmd(cmd, args, cb) {
var spawn = require('child_process').spawn
var child = spawn(cmd, args);
var me = this;
child.stdout.on('data', function(me, data) {
cb(me, data);
});
}
foo = new run_cmd('dir', ['/B'], function (me, data){me.stdout=data;});
console.log(foo.stdout); // yields "undefined" <------
Run Code Online (Sandbox Code Playgroud)
我无法理解代码在上面的位置......这个模型的一个非常简单的原型工作......
function try_this(cmd, cb) {
var me = this;
cb(me, cmd)
}
bar = new try_this('guacamole', function (me, cmd){me.output=cmd;})
console.log(bar.output); // yields "guacamole" <----
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么try_this()有效,而run_cmd() …
我想要
C:\>ACommandThatGetsData > save.txt
Run Code Online (Sandbox Code Playgroud)
但是,我不想在控制台中解析和保存数据,而是希望使用Node.JS执行上述命令
如何使用Node.JS执行shell命令?
我正在尝试在node.js中同步执行child_process(是的,我知道这很糟糕,我有充分的理由)并检索stdout上的任何输出,但我无法弄清楚如何...
我发现这个SO帖子:node.js同步执行系统命令,它描述了如何使用库(node-ffi)来执行命令,这很好用,但我唯一能得到的就是进程退出代码.命令执行的任何数据都直接发送到stdout - 我该如何捕获它?
> run('whoami')
username
0
Run Code Online (Sandbox Code Playgroud)
换句话说,username是对stdout的回应,结果run是0.
我想太多,而弄清楚如何读取标准输出
我正在尝试执行驻留在我的服务器中的 shell 脚本。我需要在执行后获取此 shell 脚本的(字符串)结果。但是,只有当我的 ReactJS 应用程序中的某个按钮被按下时,才应该触发此脚本。
我花了相当多的时间寻找答案。到目前为止,所有答案都指向创建 Web 服务,然后让应用程序在单击按钮时调用该服务的想法。但没有一个答案指出这是如何完成的,也没有任何答案指出任何讨论这种方法的文章。(抱歉,如果这是一个基本方法,但我上个月刚刚从 Udemy 学习了 ReactJS。)
您介意创建一个简单的代码来演示“shell 脚本 Web 服务”和按钮 (onClick) 之间的通信吗?或者至少提供一个讨论这种方法的文章链接?
谢谢你的帮助。
编辑:到目前为止我尝试的是How toexecute shell command in Javascript。但评论说这在浏览器上不起作用。我想这是我需要在网络服务中编写的代码?
键入后,我正在尝试使用quickscrape编写网络爬虫程序
quickscrape \
--url https://peerj.com/articles/384 \
--scraper journal-scrapers/scrapers/peerj.json \
--output peerj-384
--outformat bibjson
Run Code Online (Sandbox Code Playgroud)
并在我的终端中点击“Enter”,库将从爬虫中生成结果并将它们放入一个文件夹中。
现在我想编写一个 javascript 程序,以便为我调用这些终端命令,但我不确定如何与 node.js 中的终端进行交互。
node.js ×5
javascript ×3
cmd ×1
command ×1
next.js ×1
reactjs ×1
ruby ×1
shell ×1
synchronous ×1
web-crawler ×1