如何在Node.js中执行外部程序?

qybjjes1  于 2023-06-29  发布在  Node.js
关注(0)|答案(5)|浏览(209)

是否可以从node.js中执行外部程序?是否有与Python的os.system()或任何添加此功能的库等效的库?

dy1byipe

dy1byipe1#

var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr) {
  // result
});
ljo96ir5

ljo96ir52#

exec具有512k的缓冲区大小的存储器限制。在这种情况下,最好使用spawn。使用spawn,可以在运行时访问已执行命令的stdout

var spawn = require('child_process').spawn;
var prc = spawn('java',  ['-jar', '-Xmx512M', '-Dfile.encoding=utf8', 'script/importlistings.jar']);

//noinspection JSUnresolvedFunction
prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
    var str = data.toString()
    var lines = str.split(/(\r?\n)/g);
    console.log(lines.join(""));
});

prc.on('close', function (code) {
    console.log('process exit code ' + code);
});
dgtucam1

dgtucam13#

最简单的方法是:

const { exec } = require("child_process")
exec('yourApp').unref()

unref是结束您的进程而不等待“yourApp”所必需的

这是执行文件

tv6aics1

tv6aics14#

Node.js文档:
Node通过ChildProcess类提供了一个三向popen(3)工具。
参见http://nodejs.org/docs/v0.4.6/api/child_processes.html

xam8gpfp

xam8gpfp5#

使用import语句和utils promisify:

import { exec } from 'child_process';
import utils from 'util';

const execute = utils.promisify(exec);
console.log(await execute('pwd'));

相关问题